Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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_Arrays - Fatal编程技术网

Javascript 获取最接近的数组数

Javascript 获取最接近的数组数,javascript,arrays,Javascript,Arrays,我想得到数组中最接近的数字。它必须是这样的: 例如,我有一个数组:[1,3,7,15,40,55,70,80,95] 数字变量:numberD1; 如果数字1:8-最接近的数字只能是7。不是15岁。 如果数字1:54-它只能是40。不是55岁。 我是说,我想要像这样最接近的数字。但是我选择的数字不能高于最接近的数字(比如Math.floor()function) 对不起,我的英语不好。我希望我把我的问题说得很好。假设数组已排序,我认为理论上可以搜索指定的值,然后返回它前面的值 迭代搜索

我想得到数组中最接近的数字。它必须是这样的:
例如,我有一个数组:
[1,3,7,15,40,55,70,80,95]

数字变量:
numberD1

如果数字1:8-最接近的数字只能是7。不是15岁。
如果数字1:54-它只能是40。不是55岁。

我是说,我想要像这样最接近的数字。但是我选择的数字不能高于最接近的数字(比如
Math.floor()
function)


对不起,我的英语不好。我希望我把我的问题说得很好。

假设数组已排序,我认为理论上可以搜索指定的值,然后返回它前面的值

迭代搜索,然后返回numberD1[key-1]


啊,我刚才看到你在搜索任意值,我相信你仍然可以找到一种解决方法。只需搜索上面最接近的值,然后执行我显示的操作。

假设数组已排序,我认为理论上可以只搜索指定的值,然后返回前面的值

迭代搜索,然后返回numberD1[key-1]

啊,我刚才看到你在搜索任意值,我相信你仍然可以找到一种解决方法。只需搜索上面最接近的值,然后执行我显示的操作。

您可以使用:

//示例数组
a=[1,3,7,15,40,55,70,80,95]
//找到正确的号码
函数getClosest(a,编号1){
返回编号1-a.reduce(函数(最接近,v){
返回numberD1>=v?数学最小值(numberD1-v,最近的):最近的;
},1e100);
}  
//输出结果
写(8+'=>'+getClosest(a,8));
文件。写(“
”); 写(54+'=>'+getClosest(a,54))您可以使用:

//示例数组
a=[1,3,7,15,40,55,70,80,95]
//找到正确的号码
函数getClosest(a,编号1){
返回编号1-a.reduce(函数(最接近,v){
返回numberD1>=v?数学最小值(numberD1-v,最近的):最近的;
},1e100);
}  
//输出结果
写(8+'=>'+getClosest(a,8));
文件。写(“
”);
写(54+'=>'+getClosest(a,54))如果我理解正确,如果数组已排序,则您正在查找类似的内容:

var list = ...
var numberD1 = ...
var result = null;
for (var i = 0; i < list.length(); i++){
    if (list[i] <= numberD1)
        numberD1 = list[i];
}
return result;
var列表=。。。
变量numberD1=。。。
var结果=null;
对于(var i=0;i如果(list[i]如果我理解正确,那么如果数组已排序,您正在查找类似的内容:

var list = ...
var numberD1 = ...
var result = null;
for (var i = 0; i < list.length(); i++){
    if (list[i] <= numberD1)
        numberD1 = list[i];
}
return result;
var列表=。。。
变量numberD1=。。。
var结果=null;
对于(var i=0;iif(list[i]我只是想发明
Array.prototype.insert()
,它插入从给定索引值开始的一系列项,并返回经过修改的数组。这是函数JS所需要的。但是,受此问题约束的
insertNum
函数不会修改原始数组

Array.prototype.insert=函数(i,…rest){
此.拼接(i,0,…剩余)
还这个
}
var-arr=[1,3,7,15,40,55,70,80,95];
var insertNum=(a,n)=>a.slice(0)
插入(a.reduce)(p,c,i)=>{var d=Math.abs(n-c);
p[0]>d&(p[0]=d,p[1]=n>ci+1:i);
返回p},[无穷大,0])[1],n);
document.writeln(“+JSON.stringify(insertNum(arr,8))+”);
function closest(num, array){
var closest = Infinity
    for (var i = 0; i < array.length; i++)
        if (closest < num){
            if (array[i] < num && array[i] > closest)
                closest = array[i]
        }
        else if (array[i] < num || array[i] < closest)
            closest = array[i]
    return closest != Infinity? closest :null
}

document.writeln(“+JSON.stringify(insertNum(arr,54))+”);
我只是想发明
Array.prototype.insert()
插入从给定索引值开始的一系列项,并返回经过修改的数组。函数JS需要它。但是受此问题约束的
insertNum
函数不会修改原始数组

function closest(num, array){
var closest = Infinity
    for (var i = 0; i < array.length; i++)
        if (closest < num){
            if (array[i] < num && array[i] > closest)
                closest = array[i]
        }
        else if (array[i] < num || array[i] < closest)
            closest = array[i]
    return closest != Infinity? closest :null
}
Array.prototype.insert=函数(i,…rest){
此.拼接(i,0,…剩余)
还这个
}
var-arr=[1,3,7,15,40,55,70,80,95];
var insertNum=(a,n)=>a.slice(0)
插入(a.reduce)(p,c,i)=>{var d=Math.abs(n-c);
p[0]>d&(p[0]=d,p[1]=n>ci+1:i);
返回p},[无穷大,0])[1],n);
document.writeln(“+JSON.stringify(insertNum(arr,8))+”);
function closest(num, array){
var closest = Infinity
    for (var i = 0; i < array.length; i++)
        if (closest < num){
            if (array[i] < num && array[i] > closest)
                closest = array[i]
        }
        else if (array[i] < num || array[i] < closest)
            closest = array[i]
    return closest != Infinity? closest :null
}

document.writeln(“+JSON.stringify(insertNum(arr,54))+”);
这应该可以完成以下工作:

function closest(num, array){
var closest = Infinity
    for (var i = 0; i < array.length; i++)
        if (closest < num){
            if (array[i] < num && array[i] > closest)
                closest = array[i]
        }
        else if (array[i] < num || array[i] < closest)
            closest = array[i]
    return closest != Infinity? closest :null
}
编辑-尽可能获得较低的数字

函数最近(num,数组){
var=无穷大
对于(var i=0;i最近)
最近的=数组[i]
}
else if(数组[i]
这应该可以完成以下工作:

编辑-尽可能获得较低的数字

函数最近(num,数组){
var=无穷大
对于(var i=0;i最近)
最近的=数组[i]
}
else if(数组[i]
您自己做了什么来尝试解决这个问题?检查数组forEach函数,我使用这个函数。我在stackoverflow上发现了这个问题。
函数最近(num,arr){var mid;var lo=0;var hi=arr.length-1;而(hi-lo>1){mid=Math.floor((lo+hi)/2);if(arr[mid]