JavaScript中的嵌套循环:有人能解释一下我为什么在这段代码中得到这个结果吗



我正在学习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(' '));
});

最新更新