在 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));
这里有一个更直接的解决方案:
- 找出数组中数字与数字的差值
- 在新的差异数组中找到最小值
- 现在找到那个最小值的索引
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);