代码如下:
const mp = new Array(3).fill([])
const arr = ['a', 'b', 'c']
arr.forEach((e, i) => {
mp[i].push(e)
})
console.log(mp)
我期望得到的结果是
[['a'],['b'],['c']]
但是实际上却是
[ [ 'a', 'b', 'c' ], [ 'a', 'b', 'c' ], [ 'a', 'b', 'c' ] ]
当我将mp的初始化代码改为
const mp = []
for(let i = 0; i < 3;i++)
mp.push([])
运行结果就如同我预期的是
[['a'],['b'],['c']]
原因:
使用Array.fill填充引用类型的数据的时候,是填充的引用。
其实仔细一看就能发现的问题,但是却折磨了我四十多分钟,引用类型的概念还是不够深入啊qaq