方法一(错误)
const x = new Array(6).fill(new Array(6).fill(null));
使用该方法创建的二维数组,修改一个值,会导致同一列的值都被修改。
原因是使用了fill()
。当您将创建一个带有对象(引用类型)的数组时,则每个元素都在内存中引用相同的值。通俗的讲,就是我们创建了一个一维数组,将一维数组重复
放到一个新的一维数组里面,得到的二维数组,这样就是其实他们都是同一个数组。因为fill
添加的是一个静态值
方法二(正确)
const x = [...Array(6)].map(x => Array(6).fill(null))
用上述代码创建的二维数组不会有法一的问题
是因为使用传播运算符,然后使用map(),不需要将new与array一起使用。 new Array和Array相同