代码之家  ›  专栏  ›  技术社区  ›  Andrei Priboi

矩阵中的javascript foreach

  •  0
  • Andrei Priboi  · 技术社区  · 2 年前

    我有一个由0s、1s和“X”组成的矩阵,我试图使用“forEach()”方法来找到“X”,并用另一个值替换它。我该怎么做呢?

    let a=new Array
    for(int i=0;i<=5;i++) {
      a[i]=new Array
      for(int j=0;j<=5;j++) {
        a[i][j]=Math.round(Math.random())
      }
    }
    a[3][2]="X" //the indexes are random values
    
    for(int i=0;i<=5;i++) {
      for(int j=0;i<=5;j++) {
        if(a[i][j]=="X") {
          a[i][j]="found"
          break
        }
      }
    }
    
    0 回复  |  直到 2 年前
        1
  •  0
  •   Michael    2 年前
    let matrix1 = [
    [0, 1, 0, 1, 1],
    [1, 0, 1, 1, 1],
    [0, 1, 1, 0, 0],
    [1, 0, 1, 0, 1],
    [0, 1, 1, 'x', 1]
    ];
    
    matrix1
        .forEach((element1, index1, array1) => { 
            element1.forEach((element2, index2, array2) => {
                if(array1[index1][index2] == 'x') {
                    array1[index1][index2] = 'y';
                }
            });
        });
    

    可能还有其他(更好的解决方案),但这应该是可行的。但我建议使用两个嵌套的for循环。
    对于 forEach 方法必须创建两个lambda函数,当调用它们时,会发生上下文切换(对此不确定,可能会由javascript解释器优化/删除)。因此,内存占用可能略高,而性能可能更低。但对于5x5矩阵来说,这些都不重要。
    普通for循环的可读性也要高得多——至少对我来说是这样;)