У меня есть число от минус 1000 до плюс 1000, и у меня есть массив с числами в нем. Примерно так:
[2, 42, 82, 122, 162, 202, 242, 282, 322, 362]
Я хочу, чтобы число, которое у меня было, изменилось на ближайшее число в массиве.
Например, я получаю 80
в качестве числа. Я хочу получить 82
.
Работы ES6
/**
* Finds the nearest value in an array of numbers.
* Example: nearestValue(array, 42)
*
* @param {Array<number>} arr
* @param {number} val the ideal value for which the nearest or equal should be found
*/
const nearestValue = (arr, val) => arr.reduce((p, n) => (Math.abs(p) > Math.abs(n - val) ? n - val : p), Infinity) + val
Примеры:
let values = [1,2,3,4,5]
console.log(nearestValue(values, 10)) // --> 5
console.log(nearestValue(values, 0)) // --> 1
console.log(nearestValue(values, 2.5)) // --> 2
values = [100,5,90,56]
console.log(nearestValue(values, 42)) // --> 56
values = ['100','5','90','56']
console.log(nearestValue(values, 42)) // --> 56