索引混淆:嵌套 JavaScript 循环 - forEach 在 for 循环中
index confusion: nested JavaScript loops - forEach within a for loop
我想在 for 循环内为数组的每个元素使用 forEach 函数,以将 for 循环的索引分配给元素。
我的代码:
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element2"].forEach(function logArrayElements(element, i) {
console.log('element:', element, 'index:', i);
});
}
结果:
i: 0
element: element0 index: 0
element: element1 index: 1
element: element2 index: 2
i: 1
element: element0 index: 0
element: element1 index: 1
element: element2 index: 2
我在找什么:
i: 0
element: element0 index: 0
element: element1 index: 0
element: element2 index: 0
i: 1
element: element0 index: 1
element: element1 index: 1
element: element2 index: 1
那是因为您从外部提供了 i
作为 forEach
、"shadowing" 和 i
的第二个参数的名称。可变分辨率从内到外开始,内部优先。这意味着,回调将使用内部 i
而不是外部 i
.
您可以做的是重命名其中一个变量,这样内部变量就不会遮盖外部变量。另外,i
只是一个坏名字。给它起一个更有意义的名字。
您需要使用不同的变量。您正在使用 'i' 两次。
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element3"].forEach(function logArrayElements(element, x) {
console.log('element:', element, 'index:', x);
});
}
你说 element3
我假设你的意思是 element2
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element2"].forEach(function (element, index) {
console.log('element:', element, 'index:', i);
});
}
您使用 i
作为循环计数器和 forEach
中的索引
我想在 for 循环内为数组的每个元素使用 forEach 函数,以将 for 循环的索引分配给元素。
我的代码:
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element2"].forEach(function logArrayElements(element, i) {
console.log('element:', element, 'index:', i);
});
}
结果:
i: 0
element: element0 index: 0
element: element1 index: 1
element: element2 index: 2
i: 1
element: element0 index: 0
element: element1 index: 1
element: element2 index: 2
我在找什么:
i: 0
element: element0 index: 0
element: element1 index: 0
element: element2 index: 0
i: 1
element: element0 index: 1
element: element1 index: 1
element: element2 index: 1
那是因为您从外部提供了 i
作为 forEach
、"shadowing" 和 i
的第二个参数的名称。可变分辨率从内到外开始,内部优先。这意味着,回调将使用内部 i
而不是外部 i
.
您可以做的是重命名其中一个变量,这样内部变量就不会遮盖外部变量。另外,i
只是一个坏名字。给它起一个更有意义的名字。
您需要使用不同的变量。您正在使用 'i' 两次。
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element3"].forEach(function logArrayElements(element, x) {
console.log('element:', element, 'index:', x);
});
}
你说 element3
我假设你的意思是 element2
for (var i = 0; i < 2; i++) {
console.log('i:', i);
["element0", "element1", "element2"].forEach(function (element, index) {
console.log('element:', element, 'index:', i);
});
}
您使用 i
作为循环计数器和 forEach