javascript - 如何创建一个全为零的 nxn 矩阵(数组的数组)?

标签 javascript arrays matrix

我想创建一个像这样的数组矩阵:

createMatrix(4);

// logs:
[[0,0,0,0],
 [0,0,0,0],
 [0,0,0,0],
 [0,0,0,0]];

目前我的解决方案是:

function createMatrix (n) {
  var innerArr;
  var outerArr = [];

  for (var i=0; i<n; i++){
    innerArr = [];
    for (var j=0; j<n; j++) {
      innerArr.push(0);
    }
    outerArr.push(innerArr);
  }
}

console.log(outerArr);

有没有更有效的方法来做到这一点?这将迭代 nxn 次,这对于非常简单的事情来说效率非常低。

最佳答案

使用 ECMAScript 2015 函数 Array.prototype.fill() :

Array(row_count).fill(Array(column_count).fill(0)).map(a => a.slice())

说明:

// a sparse array with row_count "absent" items:
Array(row_count)
// an array with column_count members with the value 0:
                      Array(column_count).fill(0)
// an array with row_count times the identic array as value:
Array(row_count).fill(Array(column_count).fill(0))
// shallow copy the inner array:
Array(row_count).fill(Array(column_count).fill(0)).map(a => a.slice())

速度?

表面上,随着矩阵的增长(相对于循环),Array.prototype.fill() 变体变得更快。 至少在 Firefox 中是这样。 YMMV。

关于javascript - 如何创建一个全为零的 nxn 矩阵(数组的数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055488/

相关文章:

Javascript删除具有重复属性的数组对象,同时保留最新出现的对象

python - 如何在Python中将pandas数据框转换为矩阵格式?

arrays - 相当于 julia 中的 numpy.c_

arrays - 从n,k维矩阵中减去n,k维矩阵

javascript - 使用本地 JSON 数据填充 ExtJS 3.4 组合框

javascript - div 内的下拉列表以显示 onmouseover 工具提示

arrays - bash:如何根据模式从数组中删除元素

c++ - 数组/列表及其维度

javascript - 我想在我的参数编辑器中使用正则表达式来验证标志和值

JavaScript 减法问题