gpt4 book ai didi

javascript - 在Javascript中将数字与集合中最接近的数字匹配

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:47 25 4
gpt4 key购买 nike

我有一个值数组,我需要一个接受两个整数并将这两个整数分配给数组中最接近的值的函数。

var bandwidthSteps = [0.128, 0.256, 0.512, 1, 2, 4, 5, 8, 10, 12, 15, 18, 20, 22, 25, 30, 40, 50, 55, 60, 80, 90, 100, 110, 128, 200, 256, 300, 350, 400, 450, 500];

当“私有(private)”值和“访客”值出现时,我需要将每个值与集合中最接近的值相匹配 - 向下舍入。

var function = closestValues(private,guest) {
//
};

所以当这个函数被赋予 14 和 21 时,我需要函数返回:

private = 15
guest = 20

因为这些是与数组中的整数最接近的匹配项。注意数组中的“steps”是不规则的,不是2,5,8,11之类的,不然就很简单了。

JS 函数中的解决方案会很棒,或者是制作此类函数的正确方向。我想到的想法似乎过于复杂:对于数组中每组两个连续的数字,对这两个数字进行平均,然后确定给定的整数是大于还是小于平均值,等等。我敢肯定还有更多简洁的方式。

最佳答案

您可以迭代数组并检查绝对增量和最后一个增量。

function closestValue(v) {
var value,
lastDelta;

bandwidthSteps.some(function (a) {
var delta = Math.abs(v - a);
if (delta >= lastDelta) {
return true;
}
value = a;
lastDelta = delta;
});
return value;
}

var bandwidthSteps = [0.128, 0.256, 0.512, 1, 2, 4, 5, 8, 10, 12, 15, 18, 20, 22, 25, 30, 40, 50, 55, 60, 80, 90, 100, 110, 128, 200, 256, 300, 350, 400, 450, 500];

console.log(closestValue(14));
console.log(closestValue(21));

关于javascript - 在Javascript中将数字与集合中最接近的数字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089858/

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