2017-11-09 5 views
0

2D配列を手動で作成して特定の要素を編集するときに、目的の結果が得られます。 forループを使用して作成し、配列内の1つの要素を編集すると、各行の配列全体が変更され、列全体が編集されます。JavaScript 2D配列で、列ではなく特定の要素を編集する

この現象を回避するためにforループを使用して2D配列を作成するより良い方法はありますか?

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

答えて

0

配列は参照によって渡された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)); 
    } 
} 
関連する問題