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

问题描述 投票:0回答:1

请查看此数组:

(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

javascript arrays indexing find closest
1个回答
0
投票

您可以存储索引并返回此值。

function closest(num, arr) {
  var curr = arr[0];
  var diff = Math.abs(num - curr),
      index = 0;
  for (var val = 0; val < arr.length; val++) {
    var 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));
© www.soinside.com 2019 - 2024. All rights reserved.