JS中,数组的fill()
方法可以用来将一个固定值填充到数组中的每一个元素上。但是当传递的参数为对象时,会出现指向同一个引用地址的问题。因此,为了解决这个问题,我们可以采取以下几种方案。
方案一:使用 ES6 中的 Array.from() 方法
在 ES6 中,Array.from() 方法可以将任何可迭代对象转换为一个数组。因此,我们可以先使用该方法生成一个全是空对象的数组,然后再使用map()
方法将每一个空对象填充为我们想要的数据。
const arr = Array.from({ length: 5 }, () => ({}));
arr.map(item => {
Object.assign(item, {name: '张三', age: 18});
});
使用以上方法,每个数据对象都将是不同的,它们互不影响。
方案二:使用 JSON 序列化和反序列化
我们可以使用 JSON 序列化和反序列化的方法来实现拷贝对象,从而达到解决相同引用地址的问题。
const obj = { name: '张三', age: 18 };
const arr = new Array(5).fill(JSON.parse(JSON.stringify(obj)));
以上方法先将对象转成字符串再反序列化成对象,这样就会生成不同的对象实例,从而解决了相同引用地址的问题。
总结
以上就是两种解决Array.fill()
参数为对象指向同一个引用地址的问题的方法。无论是使用Array.from()
方法还是使用 JSON 的序列化和反序列化方法,都可以有效地解决这个问题,具体使用哪种方法视场景而定。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS解决 Array.fill()参数为对象指向同一个引用地址的问题 - Python技术站