在Javascript中唯一更新数组中的对象时,对象值都在更改
我目前有一个名为在Javascript中唯一更新数组中的对象时,对象值都在更改,javascript,arrays,object,Javascript,Arrays,Object,我目前有一个名为posts的对象数组。 for(var i = 0; i < posts.length; i++){ let post = posts[i] let { item, category } = post let postCollections = categories[category] for(var col in userCollections[category]){ let items = userColl
posts的对象数组。
for(var i = 0; i < posts.length; i++){
let post = posts[i]
let { item, category } = post
let postCollections = categories[category]
for(var col in userCollections[category]){
let items = userCollections[category][col].items
if(items && col){
postCollections[col]['item'] = item
console.log("HERE!, item)
if(item in items){
postCollections[col]['joined'] = true
}else{
postCollections[col]['joined'] = false
}
}
}
posts[i]['collections'] = postCollections
}
for(var i=0;i
运行此操作时,将打印“此处!“显示项目值是唯一的。当我打印出
posts
并查看键项目的值时,它们都显示相同的项目。这是一个很难解决的问题。结果表明,我设置postCollections的行反复使用相同的对象。像这样复制对象完成了以下操作:
let postCollections = JSON.parse(JSON.stringify(categories[category]));
如果categories[category]
是一级深度对象或数组,则可以使用..
扩展语法或slice(slice仅用于数组)。这个问题的原因是因为对象是引用,所以当您更新任何一个元素时,它在所有其他元素上都很明显,因为它们都引用相同的内存位置