为什么我不能对二维数组进行正确的迭代?



这是我的代码。我想拉出偶数元素。但我能找到的只有4 4 4 4 4

function f6() {
let out = '';
let a6 = [[1, 2], [3, 4], [5, 6], [21, 34], [44, 56]];
for (let i = 0; i < a6.length; i++) {
for (let i = 0; i < a6[i].length; i++) {
if (a6[i][i] % 2 == 0) {
out += a6[i][i] + ' ';
}
}
}
console.log(out);
}
document.querySelector('button').onclick = f6;
<button>Push!</button>

为什么?

您两次使用了相同的变量名称i。在内部循环中声明let i可以防止您从外部循环访问let i。如果你在每个循环中使用不同的变量名,例如j,那么你应该没问题。

如果您只需要使用索引来访问该索引处的值,那么您可能想要尝试for…Of循环完全避免这个问题,例如:

const data = ... // 2D array
for (let row of data) {
for (let cell of row) {
// Use cell here
}
}

您的占位符变量i在第二次迭代中被遮蔽,因此您可能需要使用另一个占位符,例如j来获得对元素的正确引用。

function f6() {
let out = '';
let a6 = [[1, 2], [3, 4], [5, 6], [21, 34], [44, 56]];
for (let i = 0; i < a6.length; i++) {
for (let j = 0; j < a6[j].length; j++) {
if (a6[i][j] % 2 == 0) {
out += a6[i][j] + ' ';
}
}
}
console.log(out);
}
document.querySelector('button').onclick = f6;
<button>Push!</button>

最新更新