所以我有数组[0,245,678,978,1647],并希望得到最接近的数字小于和最接近的数字大于我的变量。因此,如果我的变量是412,我希望245返回,678分别返回。
感谢。
答案 0 :(得分:1)
这样的事情应该这样做
function closest(arr, numb) {
var o = {
max : Math.max.apply(null, arr),
min : Math.min.apply(null, arr)
};
arr.forEach(function(itm) {
if (itm > numb && itm < o.max) o.max = itm;
if (itm < numb && itm > o.min) o.min = itm;
});
return o;
}
用作
closest([0, 245, 678, 978, 1647], 412); // returns {max : 678, min : 245}
它从数组中的最低和最高数字开始,然后迭代以查看是否有一个高于传入数字的数字,同时低于最大数字,并且当它更新时迭代时的最大数字最终会得到最接近传入值的任何内容等。