我正在学习Javascript中的嵌套循环,但我仍然不明白为什么会得到这个结果。
原始代码:
const list = [['A' , 'B' , 'C', 'D'],
['E' , 'F' , 'G', 'H'],
['I' , 'J' , 'K', 'L'] ];
for (let i = 0; i < list.length ; i++){
const row = list[i];
console.log(`LIST #${i + 1}`);
for (let j = 0; j < row.length ; j++){
console.log(row[i]);
}
}
结果:
LIST #1
-------
A
LIST #1
-------
F
LIST #1
-------
K
有人能给我解释一下吗?谢谢
编辑:这不是一个拼写错误的问题,我只是不明白为什么当我尝试使用console.log(row[I](时,我得到了a,F K(连续4次(
您打印了行[i]。但是您必须打印行[j]
const list = [['A' , 'B' , 'C', 'D'],
['E' , 'F' , 'G', 'H'],
['I' , 'J' , 'K', 'L'] ];
for (let i = 0; i < list.length ; i++){
const row = list[i];
console.log(`LIST #${i + 1}`);
for (let j = 0; j < row.length ; j++){
console.log(row[j]); // here you must print row[ j ] for right answer
}
}
这是因为您使用的是row[i]
而不是row[j]
。(目前,您使用的是第一个循环的索引(
const list = [['A' , 'B' , 'C', 'D'],
['E' , 'F' , 'G', 'H'],
['I' , 'J' , 'K', 'L'] ];
for (let i = 0; i < list.length ; i++){
const row = list[i];
console.log(`LIST #${i + 1}`);
for (let j = 0; j < row.length ; j++){
console.log(row[j]); /* row[j] instead of row[i] */
}
}
此外,如果需要,可以将.map
用于循环的数组list
insead。
const list = [['A' , 'B' , 'C', 'D'],
['E' , 'F' , 'G', 'H'],
['I' , 'J' , 'K', 'L'] ];
list.map((list, listIndex) => {
console.log(`LIST #${listIndex+1}`);
console.log(list.join(' '));
});