用JavaScript初始化二维数组

对于c或java来说,初始化二维数组很简单,但js有些不一样。

1. 错误写法

const arr = new Array(2).fill(new Array(2).fill(0)); // [ [ 0, 0 ], [ 0, 0 ] ] 
arr[0][0] = 1; // 错误 [ [ 1, 0 ], [ 1, 0 ] ]

用这种写法,当重新赋值一个元素的时候,会改变一列元素,这和我们的要求不符。

2. 正确写法:fill + map

const arr = new Array(2).fill(0).map(() => new Array(2).fill(0));
arr[0][0] = 1; // 正确 [ [ 1, 0 ], [ 0, 0 ] ]

这种写法比较简洁,先创建一维数组并用fill()赋值,然后对赋值后的一维数组使用map()回调遍历数组并返回一维数组,来创建二维数组。

3. 正确写法:for 循环创建

const arr = new Array(2); 
for (let i = 0; i < arr.length; i++) {
 arr[i] = new Array(2).fill(0); 
} 
arr[0][0] = 1; // 正确 [ [ 1, 0 ], [ 0, 0 ] ]

这种写法也是先创建一个一维数组,然后遍历数组,赋值数组的每个元素为一维数组并fill(0)

4. 正确写法:双重 for 循环逐元素填充

const arr = new Array();
for (let i = 0; i < 2; i++) {
 arr[i] = new Array(); 
 for (let j = 0; j < 2; j++) {
   arr[i][j] = 0; 
 } 
} 
arr[0][0] = 1; // 正确 [ [ 1, 0 ], [ 0, 0 ] ]

你可能感兴趣的:(javascript,python,开发语言)