gpt4 book ai didi

javascript for循环,如果增量值不匹配则嵌套?

转载 作者:行者123 更新时间:2023-11-30 11:23:07 25 4
gpt4 key购买 nike

我这里有一些代码利用调用“inArray”函数并传递用户输入值的 javascript onclick 事件。我正在尝试遍历数组并将输入的“”与数组中的值之一相匹配。我不是要返回“真/假”,但如果条件 array[i] 等于传递给它的值,那么我想执行“getElement”并放置相应的文字。

        function inArray(aValue) {
var value = parseInt(aValue);
var array = [1,2,3,4,5,6,7];
for (i = 0; i < array.length; i++){
if (array[i] === value) {
document.getElementById('primeOutput').innerHTML =
"yes, that's a prime below 200";
}
}
document.getElementById('primeOutput').innerHTML =
"not a prime number below 200";
}

我已经在屏幕上打印了返回类型,valuearray 都是数字,打印时它们等于相同的数字,那么为什么会这样继续打印最后的输出? (不是低于 200 的素数) 注意:当我将 if 语句中的条件翻转为 '!==' 时,它会将第一个语句打印到标识为 'primeOutput' 的 html 元素.

此外,您可能已经注意到,我只是想将用户输入与 200 以下的素数列表进行比较。虽然有很多方法可以做到这一点,但我真的想找出为什么这段代码会当我知道值在数组中并且两种数据类型都是数字时,不打印第一条语句吗?

再次感谢您的详细解释。

最佳答案

Medet 的回答是正确的,但没有告诉您为什么您的代码不起作用。找到匹配元素后,您将继续循环,无论如何都会调用函数中的最后一行。除了抛出错误或提前返回之外,没有其他方法可以阻止它。

您可以使用 found 变量来解决此问题:

function inArray(aValue) {
var value = parseInt(aValue),
array = [1, 2, 3, 4, 5, 6, 7],
found = false;

for (i = 0; i < array.length; i++) {
if (array[i] === value) {
found = true;
break;
}
}

if (found) {
document.getElementById("primeOutput").innerHTML =
"yes, that's a prime below 200";
} else {
document.getElementById("primeOutput").innerHTML =
"not a prime number below 200";
}
}

然而,还有一种更简单的方法:

function inArray(aValue) {
var value = parseInt(value),
array = [1, 2, 3, 4, 5, 6, 7];

return array.indexOf(value) !== -1
}

然后您可以使用此 true/false 值在别处呈现输出:

function renderPrimeCheck(aValue) {
if (inArray(aValue)) {
document.getElementById("primeOutput").innerHTML =
"yes, that's a prime below 200";
} else {
document.getElementById("primeOutput").innerHTML =
"not a prime number below 200";
}
}

关于javascript for循环,如果增量值不匹配则嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063056/

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