gpt4 book ai didi

javascript - 如果出现平局,如何在 javascript 中返回较小的数字?

转载 作者:行者123 更新时间:2023-12-01 03:41:20 25 4
gpt4 key购买 nike

我需要编写一个接受两个输入“目标”(整数)和“值”(整数列表)的函数,并找到“值”中最接近“目标”的数字。我想出了以下内容:

var targetNum = 0;
var valuesArr = [2, 4, 6, 8, 10];

function closestToTarget(target, values) {
var currVal = values[0];
var diff = Math.abs(target - currVal);
for (var i = 0; i < values.length; i++) {
var currDiff = Math.abs(target - values[i]);
if (currDiff < diff) {
diff = currDiff;
currVal = values[i];
}
}
return currVal;
}
alert(closestToTarget(targetNum, valuesArr));

该函数有效,但在平局的情况下我无法返回较小的值。我能想到的最好的是以下不起作用:

function closestToTarget(target, values) {
var currVal = values[0];
var diff = Math.abs(target - currVal);
for (var i = 0; i < values.length; i++) {
var currDiff = Math.abs(target - values[i]);
if (currDiff < diff) {
diff = currDiff;
currVal = values[i];
}
else if (currDiff == diff) {
return Math.min[currVal, values[i]];
}
else {
return currVal[i - 1];
}
}
return currVal;
}

如果出现平局,如何在 JavaScript 中返回较小的数字?

最佳答案

您的代码看起来应该可以尝试将 Math.min[currVal,values[i]] 更改为 Math.min(currVal,values[i])如果您的值是有序的(简单的语法问题),则应该可以工作。

正如 kojow7 提到的,只要有序,第一个函数也应该起作用。

否则,您应该尝试执行 currVal = Math.min(...) 并继续迭代,然后返回,而不是 return Math.min(...)循环后的 currVal 。这只是确保您检查 values 数组中的每个值,以确保您没有遗漏任何内容(但如果它是有序的,则无需继续检查,因为差异只会增加) .

关于javascript - 如果出现平局,如何在 javascript 中返回较小的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43857994/

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