我想在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
答案 0 :(得分:2)
您说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
答案 1 :(得分:1)
那是因为您提供了i
作为forEach
的第二个参数的名称,&#34;阴影&#34;来自外部的i
。变量分辨率从内到外开始,内部优先。这意味着,回调将使用内部i
而不是外部i
。
你可以做的是重命名其中一个变量,以便内部变量不会影响外部变量。此外,i
只是一个坏名字。将其命名为更有意义的东西。
答案 2 :(得分:0)
您需要使用不同的变量。你正在使用&#39; i&#39;两次。
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);
});
}