Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中查找最近的数字_Javascript_Jquery - Fatal编程技术网

Javascript 在数组中查找最近的数字

Javascript 在数组中查找最近的数字,javascript,jquery,Javascript,Jquery,我有一个分类的数字列表。我想在数组中搜索一个数字(我们称之为searchVal)。因此,如果数字在数组中,下面的代码行可以正常工作 var sPos = $.inArray(searchVal, MyArray); 但是,如果它不在MyArray中,我想选择下一个最大的数字,即 我在下面的列表中搜索8,我希望它返回10 4, 5, 6, 10, 11 我是javascript新手,想知道实现这一点的最佳方法是什么?我看到一个过滤器可以用于返回任何>=到8的数字,然后从这个过滤列表中获取最小值

我有一个分类的数字列表。我想在数组中搜索一个数字(我们称之为searchVal)。因此,如果数字在数组中,下面的代码行可以正常工作

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)