如何在javascript中创建一个2d的零数组?

时间:2010-09-11 05:22:54

标签: javascript multidimensional-array

有没有一种简单的方法可以在javascript中以编程方式创建二维数组?

我不想要的内容:

var array2D = [ 
  [0,0,0],
  [0,0,0],
  [0,0,0]
]

5 个答案:

答案 0 :(得分:18)

2017年解决方案:

派对迟到了,但这篇帖子在Google搜索结果中依然很高。

创建具有给定大小的 2D数组(适用于更多维度):

@Override
public void configure(final WebSecurity web) throws Exception {
    web.ignoring()
            .antMatchers("/")
            .antMatchers("/favicon.ico")
            .antMatchers("/**.css")
            .antMatchers("/webjars/**")
            ...

预填充2D阵列:

let array = Array(rows).fill().map(() => Array(columns));

E.g:

let array = Array(rows).fill().map(() => Array(columns).fill(0));

警告:

Array(2).fill().map(() => Array(3).fill(42)); // Result: // [[42, 42, 42], // [42, 42, 42]] 将导致所有行都是对同一个数组的引用!!


2018年9月24日更新(感谢@Tyler):

另一种可能的方法是使用Array(rows).fill(Array(columns))来应用地图功能。

E.g:

Array.fill()


基准:

Array.from(Array(2), _ => Array(3).fill(43)); // Result: // [[43, 43, 43], // [43, 43, 43]] - 方法似乎快了约70-80%。 你可以在这里查看:

https://jsperf.com/multidimensional-array-map-vs-fill

答案 1 :(得分:11)

好吧,你可以写一个辅助函数:

function zeros(dimensions) {
    var array = [];

    for (var i = 0; i < dimensions[0]; ++i) {
        array.push(dimensions.length == 1 ? 0 : zeros(dimensions.slice(1)));
    }

    return array;
}

> zeros([5, 3]);
  [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

奖励:处理任意数量的维度。

答案 2 :(得分:8)

function zero2D(rows, cols) {
  var array = [], row = [];
  while (cols--) row.push(0);
  while (rows--) array.push(row.slice());
  return array;
}

答案 3 :(得分:2)

您可以使用以下函数创建二维零数组

const zeros = (m, n) => [...Array(m)].map(e => Array(n).fill(0));

console.log(zeros(3, 4));

// [ [ 0, 0, 0, 0 ],
//   [ 0, 0, 0, 0 ],
//   [ 0, 0, 0, 0 ] ]

答案 4 :(得分:0)

适合初学者的简单易懂的方法:

function twoDarrMaker(row, col) {
  const twoDarr = [];

  for (let i = 0; i < row; i++) {
    let subarray = [];

    for (let j = 0; j < col; j++) {
      subarray.push(0);
    }

    twoDarr.push(subarray);
  }

  return twoDarr;
}

twoDarrMaker(3, 2);
// [
//   [ 0, 0 ],
//   [ 0, 0 ],
//   [ 0, 0 ]
// ]