我四处搜索试图找到类似的问题,但我不知道正确的措辞。我有一个 CGFloat 数组,然后是一个单独保存的 CGFloat。我想检查单个 CGFloat 是否在数组中存储的值之间。
我目前在一个从数组末尾开始的循环中检查它是否小于该值。然后它从右向左移动,直到它不小于并返回索引。是否有内置方法或更简洁的方法来执行此操作?
例如:
var pressureLevels:[CGFloat] = [0, 1.0, 2.133333333333333, 3.266666666666667, 4.4, 5.533333333333334, 6.666666666666667]
var tempPressure: CGFloat = 4.877777
return 4 or return 5
我想知道 tempPressure 在 4.4 和 5.533333333333334 之间的 pressureLevels 中并返回索引(4 或 5)。
最佳答案
这将返回较高的索引,以获得下一个较大的值。我从你的例子中假设数组已经排序
let largerIndex = pressureLevels.firstIndex(where: { $0 > tempPressure})
let smallerIndex = largerIndex - 1
注意边缘情况,如果没有值大于 tempPressure
则 largerIndex
将为 nil
并且如果数组中的所有值都是大于 largerIndex
将是 0
关于arrays - 如何检查值是否介于存储在数组中的两个值之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026925/