js中如果事先定义一个对象,然后将对象循环存储进list列表中,它们其实存储的同一个对象,相当于指向同一个地址,操作一个就会变动所有

如题

let listJson = {
    
    "id":[],"age":[]}
let list = []
for(let i = 0; i < 2; i++){
    
    
	list.push(listJson)
}
list[0].id = 1
// 最终结果会是 list[0].id = 1,以及 list[1].id = 1,因为默认操作的同一对象

在这里插入图片描述

解决方法:
最方便的是、不先生成对象然后push、而是直接在push中定义对象结构

let list = []
for(let i = 0; i < 2; i++){
    
    
	list.push({
    
    "id":[],"age":[]})
}
list[0].id = 1

结果:
在这里插入图片描述
其他方法:
可对对象进行深拷贝
如果是JSON可试试:JSON.parse(JSON.stringify(homeDataJson))

猜你喜欢

转载自blog.csdn.net/qq_43483251/article/details/129296451