使用Array.fill()填充引用类型数据的问题

生成一个长度为2的数组,内容为 {a: 1} 的对象填充

使用Es6 Array.fill 方法生成写起来倒是简单粗暴:  const arr = Array(2).fill({a: 1})

然后问题就来了:尝试修改 arr 的第一项:  arr[0].a = 2

打印 arr[0].a 倒是正常,然后看看arr[1].a:

emm...

为什么第二项也变了😭,查阅资料阮一峰大佬的ES6入门写的很清楚:

还是怪自己看的时候没仔细看。。。那问题就好解决了,使用map来填充吧~~

因为Array(2)生成的是稀疏数组,不能直接使用ES5的数组方法直接遍历,所以要先填充一下再使用map遍历:

Array(2).fill(null).map(_ => new Object({a: 1}))

现在再试试修改数组下的对象内容。。终于可以愉快的板砖了~~