避坑!Array.fill(new Array()) 初始化二维数组

1,093 阅读1分钟

创建一个 m*n 的二维数组

let used = new Array(3).fill(new Array(4))

结果是这样的

image.png

当我去填充某一个值时:

used[1][1]=true

image.png

这完全不是我想要的结果! 根据文档介绍,fill一个引用数据类型,那么地址指向是相同的,so... 更改一下:

let used = new Array(3);
    for (let i = 0; i < 3; i++) {
        used[i] = new Array(4);
    }
// 或者 直接
 let used = new Array(3).fill([]).map(() => new Array(4).fill(true));