【问题标题】:Edit specific element in JavaScript 2D array and not the column编辑 JavaScript 2D 数组中的特定元素而不是列
【发布时间】:2017-11-09 18:08:34
【问题描述】:

当手动创建二维数组并编辑特定元素时,我得到了想要的结果。如果我使用 for 循环创建它并编辑数组中的一个元素,它会更改每一行中的整个数组,进而编辑整个列。

有没有更好的方法来创建带有 for 循环的二维数组以避免这种行为?

var grid = [1,2,3];
var gridRows = ["O","O","O"];

for (var i = 0; i < grid.length; i++) {
    for(var j = 0; j < grid.length; j++) {
        grid[i] = gridRows;
    }
}

Image of the for loops output

//--------------------
//The manually created 2D Array
manualGrid = [["O","O","O"],["O","O","O"],["O","O","O"]];

Image of the manual methods output in console

【问题讨论】:

    标签: javascript for-loop matrix multidimensional-array


    【解决方案1】:

    数组是 javascript 中通过引用传递的对象。为避免这种情况,只需将您的代码更改为:

    var grid = [1,2,3];
    var gridRows = ["O","O","O"];
    
    for (var i = 0; i < grid.length; i++) {
        for(var j = 0; j < grid.length; j++) {
            grid[i] = JSON.parse(JSON.stringify(gridRows));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多