前端笔记之Array.fill的坑

Array.fill 填充引用型数据类型的坑


众所周知,Array.fill 可以将我们声明既有元素个数的数组填充全部或者部分的元素,但是很坑的就是他在填充引用型数据类型的时候,填充的是同一个内存地址的对象,也就意味着之后你改动其中一个元素的属性,所有的元素都会跟着改变,即便是使用了new关键词,我本来以为使用new之后就会避免这个问题的。。。

前端笔记之Array.fill的坑_第1张图片
所以嘞,那该怎么处理,去循环里面给予元素新的对象,确实这样可以,但是写着代码不好看,所以我想着既然new Array(2) 的长度就是2,那么我直接用map把empty填充成我要的对象。

const a = new Array(2).map(() => new AAA())

结果很遗憾,还是不行,应该是map对于empty是无效的。所以只能先用null填充之后再替换了。

const a = new Array(2).fill(null).map(() => new AAA())

前端笔记之Array.fill的坑_第2张图片

你可能感兴趣的:(前端,笔记,javascript)