在 javascript 中找到最接近的数组索引

find closest index of array in javascript

请看这个数组:

(function(){
    function closest (num, arr) {
        var curr = arr[0];
        var diff = Math.abs (num - curr);
        for (var val = 0; val < arr.length; val++) {
            var newdiff = Math.abs (num - arr[val]);
            if (newdiff < diff) {
                diff = newdiff;
                curr = arr[val];
            }
        }
        return curr;
    }
    var _array = [2, 42, 82, 122, 162, 202, 242, 282, 322, 362],
        _number = 155;

    return closest (_number, _array);
})()

Result is 162


您好,在这个数组中我想显示最接近结果的索引! The result will be 4

您可以存储索引和 return 这个值。

function closest(num, arr) {
    var curr = arr[0],
        diff = Math.abs(num - curr),
        index = 0;

    for (var val = 0; val < arr.length; val++) {
        let newdiff = Math.abs(num - arr[val]);
        if (newdiff < diff) {
            diff = newdiff;
            curr = arr[val];
            index = val;
        }
    }
    return index;
}

var array = [2, 42, 82, 122, 162, 202, 242, 282, 322, 362],
    number = 155;

console.log(closest(number, array));

这里有一个更直接的解决方案:

  1. 找出数组中数字与数字的差值
  2. 在新的差异数组中找到最小值
  3. 现在找到那个最小值的索引

var _array = [2, 42, 82, 122, 162, 202, 242, 282, 322, 362],
  _number = 155;

// closest index?

const diffArr = _array.map(x => Math.abs(_number - x));
const minNumber = Math.min(...diffArr);
const index = diffArr.findIndex(x => x === minNumber);

console.log('Result index', index);