Swift:检查 NSArray 中的哪个值最接近另一个给定值

标签 swift integer nsarray cgfloat

假设我有一个数组

var values:[CGFloat] = [-12.0, 450, 300]

我需要找出这些数字中哪个最接近给定值,例如

var givenValue:CGFloat = 64

有没有一种有效的方法来找出数组中哪个对象最接近 64?
我知道你可以做这样的事情:

if abs(values[0] - 64) < abs(values[1] - 64) && abs(values[0] - 64) < abs(values[2] - 64) {
    println("values[0] is the closest to 64)
}

但这会导致多个 if 语句,并且看起来效率低下。

有谁知道更好的方法吗?在此示例中,我需要数组中的值以及数组中的 objectIndex。

最佳答案

minimumDifference保存为变量。

然后迭代数组。每次将数组中的值的差异与最小差异进行比较。

如果新的差异较小,则交换最小差异。

在数组的末尾,您将得到最小的差异。

这与查找最大值、最小值等相同...

关于Swift:检查 NSArray 中的哪个值最接近另一个给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868277/

相关文章:

ios - 具有 EasyIn 动画,然后按顺序缩放动画,因为缩放动画会永远重复

c - 如何在指向整数的指针中输入数据?

iphone - 在 Objective-C 中创建对象数组。

iPhone/iOS 如何在多个文件夹中加载大量图像并在表格 View 中显示?

ios - 如何修复 : Type 'String' does not conform to protocol 'SequenceType' in Swift

ios - UITabelView 中带有 API 数据的部分

swift - 计算 NSSound 循环的次数(Swift)

delphi - 为什么使用 FillChar 来初始化 Integer

Javascript 添加整数

ios - 为什么 NSArray 有 indexOfObjectPassingTest 方法而不是像 NSSet 那样的 objectsPassingTest?