получить ближайшее число из массива

У меня есть число от минус 1000 до плюс 1000, и у меня есть массив с числами в нем. Примерно так:

[2, 42, 82, 122, 162, 202, 242, 282, 322, 362]

Я хочу, чтобы число, которое у меня было, изменилось на ближайшее число в массиве.

Например, я получаю 80 в качестве числа. Я хочу получить 82 .

140
задан m59 5 March 2015 в 06:46
поделиться

1 ответ

Работы ES6

с отсортированными и неотсортированными массивами

Целые числа Чисел и Плавания, Strings приветствовал

/**
 * 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

1
ответ дан 4 November 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: