我正在尝试合并使用对象的对象数组 Object.assign()
var state = {
items: [{
id: "Harko",
name: "Haris"
},
{
id: "Benko",
name: "Benjo"
}]
}
var a = {
id: "Benko",
name: "Bengalka"
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了:
Object.assign(state.items,a);
Object.assign({}, { items: [state.items,a]);
Run Code Online (Sandbox Code Playgroud)
我想得到的是以下内容:
{
items: [{
id: "Harko",
name: "Haris"
},
{
id: "Benko",
name: "Bengalka"
}]
}
Run Code Online (Sandbox Code Playgroud)
所以我希望var的状态中具有id"Benko"的对象被var a覆盖,因为它们具有相同的id.
Object.assign有可能吗?
任何形式的帮助将不胜感激.
谢谢
你无法在顶层使用它Object.assign.您需要做的是首先找到对象引用,然后您可以使用Object.assign它来更新它的属性:
const state = {
items: [{
id: "Harko",
name: "Haris"
},
{
id: "Benko",
name: "Benjo"
}]
}
const a = {
id: "Benko",
name: "Bengalka"
}
const foundObject = state.items.find(obj => obj.id === a.id);
Object.assign(foundObject, a);
console.log(state);Run Code Online (Sandbox Code Playgroud)