Javascript 在数组中查找最近的数字
我有一个分类的数字列表。我想在数组中搜索一个数字(我们称之为searchVal)。因此,如果数字在数组中,下面的代码行可以正常工作Javascript 在数组中查找最近的数字,javascript,jquery,Javascript,Jquery,我有一个分类的数字列表。我想在数组中搜索一个数字(我们称之为searchVal)。因此,如果数字在数组中,下面的代码行可以正常工作 var sPos = $.inArray(searchVal, MyArray); 但是,如果它不在MyArray中,我想选择下一个最大的数字,即 我在下面的列表中搜索8,我希望它返回10 4, 5, 6, 10, 11 我是javascript新手,想知道实现这一点的最佳方法是什么?我看到一个过滤器可以用于返回任何>=到8的数字,然后从这个过滤列表中获取最小值
var sPos = $.inArray(searchVal, MyArray);
但是,如果它不在MyArray中,我想选择下一个最大的数字,即
我在下面的列表中搜索8,我希望它返回10
4, 5, 6, 10, 11
我是javascript新手,想知道实现这一点的最佳方法是什么?我看到一个过滤器可以用于返回任何>=到8的数字,然后从这个过滤列表中获取最小值。或者在这种情况下,我应该使用reduce函数吗?您可以在排序数组上使用
find()
方法返回数组中满足所提供测试函数的第一个元素的值。否则将返回未定义的
console.log([13,4,6,5,10,11])。排序((a,b)=>a>b)。查找(x=>x>8))代码>您好,您可以使用地图功能确定到8的距离
var array = [4, 5, 6, 10, 11];
var distanceArray = array.map(function(element){
var distance = 8-element
if(distance < 0){
distance = distance * -1;
}
return distance;
})
现在你至少有2个。现在找到位置了
var position = distanceArray.indexOf(minimum);
现在你可以看到最近的号码了
var nearest = array[position];
得到6..对于未排序的数据,您可以获取项目的绝对增量,并与上一个项目的增量进行检查,然后返回具有较小增量的项目
var数组=[5,4,11,6,10],
find=8,
最近的=数组.reduce((a,b)=>Math.abs(a-find) 控制台日志(最近)代码>由于数组已排序,因此可以使用
var num = MyArray.find(x => x > 8)
另一个可能重复的可能重复:OP说,如果他的搜索号码是8
,他希望它返回10
,我很抱歉。我没看到
var num = MyArray.find(x => x > 8)