Допустим, у меня есть массив
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 и кажется неэффективным.
Кто-нибудь знает лучший способ сделать это? В этом примере мне понадобится значение в массиве, а также какой объектный индекс в массиве.