likes
comments
collection

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

作者站长头像
站长
· 阅读数 15

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

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

结果是这样的

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

当我去填充某一个值时:

used[1][1]=true

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

这完全不是我想要的结果! 根据文档介绍,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));