Skip to main content
 首页 » 操作系统

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

2024年01月01日38zlslch

假设我有一个数组

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 保存为变量。

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

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

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

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