JS 快速创建二维数组
坑
在算法中,创建二维数组遇到的一个坑
const arr = new Array(5).fill(new Array(2).fill(1))
我们如果想要修改其中一个元素的值
arr[0][1] = 5
我们可以发现所有数组中的第二个元素都发生了改变
查看MDN,我们会发现,当一个对象作为fill
方法的参数时,填充数组的元素是这个对象的引用
所以,new Array(5).fill(new Array(2).fill(1))
,new Array
只创建了一个数组,填充第二层的数组其实是同一个数组
方法
Array.from
-
arrayLike
想要转换成数组的伪数组对象或可迭代对象。 -
mapFn 可选
如果指定了该参数,新数组中的每个元素会执行该回调函数。 -
thisArg 可选
可选参数,执行回调函数 mapFn 时 this 对象。
const arr = Array.from(new Array(5).fill(), () => new Array(2).fill(1))
arr[0][1] = 5
console.log(arr)