Obtenga el índice para el valor más cercano en la matriz

Usando el código de esta respuesta para encontrar el valor más cercano en una matriz: https://stackoverflow.com/a/62159057

func closestMatch(values: [Int64], inputValue: Int64) -> Int64? {
   return (values.reduce(values[0]) { abs($0-inputValue) < abs($1-inputValue) ? $0 : $1 })
}

¿Cómo puedo obtener el índice del artículo que más se acerca en lugar de su valor?

Answer

Debido a que la matriz está ordenada, una solución rápida sería realizar una búsqueda binaria .

Debería ser fácil modificar esta implementación (u otras en la misma publicación) para que se ajuste a su propósito.

Lo solucione con firstIndex. No es super elegante pero funciona.

func closestMatch(values: [Int], inputValue: Int) -> Int? {
    let match = values.reduce(values[0]) { abs($0-inputValue) < abs($1-inputValue) ? $0 : $1 }
    let index = values.firstIndex(where: {$0 == match})
    return index
}