Javascript 在对象中的对象上使用Object.assign
如何使用Object.assign更新allMsgs数组中的第二个对象 我有:Javascript 在对象中的对象上使用Object.assign,javascript,object,Javascript,Object,如何使用Object.assign更新allMsgs数组中的第二个对象 我有: let v = { allMsgs: [ { a: 111, b: [], }, { a: 222, b: [], } ] } 我想要一份v的副本,以便: let v = { allMsgs: [ { a: 111, b: [], }, {
let v = {
allMsgs: [
{
a: 111,
b: [],
},
{
a: 222,
b: [],
}
]
}
我想要一份v的副本,以便:
let v = {
allMsgs: [
{
a: 111,
b: [],
},
{
a: 222,
b: ['newItem],
}
]
}
如何使用Object.assign进行此操作?只需选择要更新的零件即可
设v={
所有MSG:[
{
a:111,
b:[],
},
{
a:222,
b:[],
}
]
};
让vCopy={allMsgs:v.allMsgs.map(msg=>Object.assign({},msg))};
vCopy.allMsgs[1]=Object.assign(vCopy.allMsgs[1],{b:['newItem']});
console.log('copy',vCopy);
console.log('actual',v)代码>如果目标不是改变原始对象,那么您可以这样做:
设v={
所有MSG:[
{a:111,b:[]},
{a:222,b:[]}
]
};
设w={allMsgs:Object.assign([…v.allMsgs],
{1:Object.assign({},v.allMsgs[1],
{b:['newItem']}
)}
)};
log('updated=',w);
log('original=',v)代码>如果没有,您可以直接寻址数组并推送值
var v={allMsgs:[{a:111,b:[]},{a:222,b:[]}};
v、 allMsgs[1].b.push('newItem');
控制台日志(v)代码>
作为控制台包装{max height:100%!重要;top:0;}
为什么对象。assing
?