gpt4 book ai didi

javascript - For 循环通过 array.length 只执行一次

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

下面的代码仅执行第一个 for 循环一次,但所有其他 for 循环均按预期执行。有谁知道为什么会这样?我不确定循环中的大部分(低效、格式不良)代码的相关性如何,但我仍然将其包含在内。

var numbers = [9795526789839145, 2861747566959730, 4498854833783559, 6301982162016598, 1131197164065322];
for (i = 0; i < numbers.length; i++) {
var current = numbers[i];
var currentStr = current.toString();
var reverseStr = currentStr.split('').reverse().join('');
var reverseArr = [];

for (i = 0; i < reverseStr.length; i++) {
reverseArr.push(reverseStr[i]);
}

var A = 0;
for (i = 0; i < reverseArr.length; i += 2) {
A += Math.round((reverseArr[i]));
}

var evenDigits = [];
for (i = 1; i < reverseArr.length; i += 2) {
evenDigits.push(reverseArr[i]);
}

for (i = 0; i < evenDigits.length; i++) {
evenDigits[i] = evenDigits[i] * 2;
if (evenDigits[i] > 9) {
var temp = evenDigits[i].toString();
var firstInt = Math.round(temp[0]);
var secondInt = Math.round(temp[1]);
evenDigits[i] = firstInt + secondInt;
}
}

var B = 0;
for (i = 0; i < evenDigits.length; i++) {
B += evenDigits[i];
}

var sum = A + B;

if (sum % 10 == 0) {
console.log('Yes');
} else console.log('No');
}

最佳答案

在您的代码中,您使用“i”变量的相同实例来迭代所有循环。

解决方案是使用不同的索引变量来迭代外部和内部循环

var numbers = [9795526789839145, 2861747566959730, 4498854833783559, 6301982162016598, 1131197164065322];
var i = 0;
var j = 0;
for (j=0; j < numbers.length; j++) {
var current = numbers[j];
/...
}

JavaScript 的行为是这样的,因为“i”的作用域不为阻塞(就像在 Java 和 C# 中一样)。在 ES2015 中,您可以使用 letconst 将变量绑定(bind)到 block 作用域(在本示例中为 for 循环)

关于javascript - For 循环通过 array.length 只执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332130/

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