Javascript数组函数有我无法看到的错误

Map*_*eve 1 javascript arrays

我正在编写一个函数,它应该创建一个预先填充零的二维数组.我的输出看起来是正确的,但显然它有一个我没有看到的错误.有人知道它是什么吗?我没有看到它.

function createMatrix(size) {
    var defValue = 0;
    var row = [];
    var matrix = [];
    for (var i = 0; i < size; i++) {
        row.push(defValue);
    }
    for (var i = 0; i < size; i++) {
        matrix.push(row);
    }
    return matrix;
}
Run Code Online (Sandbox Code Playgroud)

nde*_*ore 9

你每次都要把它推进row你的阵列matrix.这些都指向同一个数组,因为它们是通过引用传递的.

您应该为每行创建一个新数组:

function createMatrix(size){
    var defValue = 0;
    var matrix = [];
    for (var i = 0; i < size; i++) { 
        var row = [];
        for (var j = 0; j < size; j++) { 
            row.push(defValue); 
        }
        matrix.push(row); 
    }  
    return matrix;
}
Run Code Online (Sandbox Code Playgroud)