获取最接近的数组数
Get closest number of array
我想得到数组中最接近的数字。它必须是这样的:
例如,我有一个数组:[1, 3, 7, 15, 40, 55, 70, 80, 95]
数字变量:numberD1
;
If numberD1:8-最接近的数字只能是7。不是15。
如果数字D1:54-它只能是40。不是55。
我的意思是,我想要这样最接近的数字。但我选择的数字不能高于最接近的数字(如Math.floor()
函数)。
抱歉我英语不好。我希望我能很好地解决我的问题。
您可以使用这个:
// sample array
a = [1, 3, 7, 15, 40, 55, 70, 80, 95]
// get right number
function getClosest(a, numberD1) {
return numberD1 - a.reduce(function(closest, v) {
return numberD1 >= v ? Math.min(numberD1-v, closest) : closest;
}, 1e100);
}
// output result
document.write(8 + ' => ' + getClosest(a, 8));
document.write('<br>');
document.write(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;
假设你的数组已经排序,我认为理论上你可以搜索指定的值,然后返回它前面的值?
通过搜索进行循环,然后返回numberD1[key-1];
啊,我刚刚看到你在搜索任何任意的值,我相信你仍然可以找到绕过它的方法。只需搜索上面最接近的值,然后按照我显示的操作。
这应该完成任务:
编辑-如果可能的话,注意得到一个更低的数字
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()
,它插入从给定索引值开始的一系列项,并返回突变数组。功能JS需要它。然而,受此问题影响的insertNum
函数不会使原始数组发生突变。
Array.prototype.insert = function(i,...rest) {
this.splice(i,0,...rest)
return this
}
var arr = [1, 3, 7, 15, 40, 55, 70, 80, 95];
var insertNum = (a,n) => a.slice(0)
.insert(a.reduce((p,c,i) => {var d = Math.abs(n-c);
p[0] > d && (p[0] = d, p[1] = n > c ? i+1 : i);
return p} ,[Infinity,0])[1],n);
document.writeln("<pre>" + JSON.stringify(insertNum(arr,8)) + "</pre>");
document.writeln("<pre>" + JSON.stringify(insertNum(arr,54)) + "</pre>");
相关文章:
- 获取最接近的数组数
- JavaScript:如何在最接近值的关联数组中查找键
- 在 javascript 数组中搜索最接近的下一个值
- 按键查找数组中最接近的 2 个元素
- 检测数组中接近且具有相同索引值的数字
- Javascript/jquery- 如何在数组中获取最接近的时间
- 从数组中获取最接近的数字匹配项,必须更低
- 如何使用 lodash 从数组中获取最接近目标的前两个数字
- javascript/查找数组中最接近的值
- 我的算法中查找数组最大元素的缺陷在哪里
- 在Javascript中查找最接近所需值的数组条目
- 查找最接近给定时间数组的时间
- Javascript在数组中找到最接近的数字,而不需要重复
- 从数组中获取最接近的数字
- Javascript在数组中找到最接近的数字
- 最接近数组的价格
- 如何从数组中获得最接近的值
- 我如何在数组中找到最接近的数字,而不用遍历
- 获取数组(JS)组合的最接近的值
- 改变这种字符串数组最优雅的方法是什么