gpt4 book ai didi

javascript - 根据值查找数组中最近的元素,但当值超过 JavaScript 中最近的元素时则不查找

转载 作者:行者123 更新时间:2023-12-02 22:34:50 25 4
gpt4 key购买 nike

我想根据一个值找到数组中最近的元素,但想要最近的大于或等于该值...例如在这个数组 [3000, 5000, 8000] 中,当我搜索 3000 和下面它应该返回 3000,但是当我搜索 3001 时,它应该返回 5000。

这是我现在拥有的代码:

let array = [3000, 5000, 8000];

private closestNumArray(array, num) {
var x = array.reduce(function(min, max) {
return (Math.abs(max - num) < Math.abs(min - num) ? max : min);
});

return x;
}

closesNumArray(array, 3001) // returns 3000

我希望它返回 5000 或基于值的最近的下一个元素,但它返回 3000

谢谢

最佳答案

假设数组已排序,只需要一个简单的 while 循环即可。如果我们遍历数组的末尾(因为 val 太大),我们将返回数组中的最后一个值。

let array = [3000, 5000, 8000];

const closestNumArray = function(array, val) {
i = 0;
while (i < array.length && array[i] < val) i++;
return array[i] || array[i-1];
}

console.log(closestNumArray(array, 2999));
console.log(closestNumArray(array, 3000));
console.log(closestNumArray(array, 3001));
console.log(closestNumArray(array, 5000));
console.log(closestNumArray(array, 5001));
console.log(closestNumArray(array, 8000));
console.log(closestNumArray(array, 8001));

关于javascript - 根据值查找数组中最近的元素,但当值超过 JavaScript 中最近的元素时则不查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com