arrays - 如何检查值是否介于存储在数组中的两个值之间

标签 arrays swift range

我四处搜索试图找到类似的问题,但我不知道正确的措辞。我有一个 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

注意边缘情况,如果没有值大于 tempPressurelargerIndex 将为 nil 并且如果数组中的所有值都是大于 largerIndex 将是 0

关于arrays - 如何检查值是否介于存储在数组中的两个值之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026925/

相关文章:

c# - EPPlus:将样式复制到一个范围

javascript - Bootstrap 4.3 Slider - 如何使用 jQuery 捕获幻灯片期间的事件?

MySQL:如何在某些条件下选择特定时间范围之间的最大/最小时间数据?

c - 如何在 C 中将单词作为变量?

python - 枚举二进制变量值的所有可能组合

java - boolean[] 与 BitSet : Which is more efficient?

javascript - 将复杂的 Javascript 数组发送到 ASP.NET Controller 方法

ios - 快速解析从 API 返回的 JSON 对象

swift - 表达式类型 'SocketIOClientConfigutation' 在没有更多上下文的情况下不明确

ios - Swift - 将标签设置在其他 View 项目之上