我有一组数字和一个值。我想找到价值附近的数字。最重要的是最高价值但我需要两者。
var array = [2,4,5,8,11];
var value = 9;
我需要的结果应该是:8和11。
我该怎么做?
感谢。
答案 0 :(得分:4)
只需为每个值编写一个简单的for循环搜索。
例如:
function findNumbers(arr, num){
var low = num + 1; //largest number lower than num, set initial value above num
var high = num - 1; //smallest number higher than num, set initial value below num
for(var i = 0; i < arr.length; i ++){
if(arr[i] > low && arr[i] < num){
low = arr[i];
}
if(arr[i] < high && arr[i] > num){
high = arr[i];
}
}
//optional check to see if low/high exists
if(low > num){
low = -1; //not found
}
if(high < num){
high = -1; //not found
}
return [low,high];
}
然后你去。无论arr
是否已排序,这都有效。
答案 1 :(得分:2)
这有助于您:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var array = [2,4,5,8,11];
var value = 9;
var min,max;
fun();
function fun() {
var sortArray = array.sort(function(a,b){return a-b});
for(var i=0; i<sortArray.length;i++) {
if (sortArray[i] < value)
min = sortArray[i];
if (sortArray[i] > value)
max = sortArray[i];
}
alert(min + " , " + max);
}
</script>
</body>
</html>
&#13;
答案 2 :(得分:1)
看着你的问题看起来你还在学习jquery。但是我相信你会在这里得到很好的建议。
以下是您的测试用例的示例,我将对您进行解释,以便您可以学习每一行并学习。
var myArray = [2, 4, 5, 8, 11];
var myValue = 9;
function BiggerThan(inArray) {
return inArray > myValue;
}
function LesserThan(inArray) {
return inArray < myValue;
}
var arrBiggerElements = myArray.filter(BiggerThan);
var nextElement = Math.min.apply(null, arrBiggerElements);
alert(nextElement);
var arrLesserElements = myArray.filter(LesserThan);
var prevElement = Math.max.apply(null, arrLesserElements);
alert(prevElement);