Ecmascript 6 使用object.assign将对象数组与对象合并
我正在尝试使用Ecmascript 6 使用object.assign将对象数组与对象合并,ecmascript-6,Ecmascript 6,我正在尝试使用object.assign() 我已经试过了: Object.assign(state.items,a); Object.assign({}, { items: [state.items,a]); 我想得到的是: { items: [{ id: "Harko", name: "Haris" }, { id: "Benko", name: "Bengalka" }] } 所以我希望id为“Benk
object.assign()
我已经试过了:
Object.assign(state.items,a);
Object.assign({}, { items: [state.items,a]);
我想得到的是:
{
items: [{
id: "Harko",
name: "Haris"
},
{
id: "Benko",
name: "Bengalka"
}]
}
所以我希望id为“Benko”的var状态的对象被var a覆盖,因为它们具有相同的id
使用Object.assign可以这样做吗
任何形式的帮助都将不胜感激
谢谢使用
对象。分配
,您无法在顶层真正做到这一点。首先需要做的是对象引用,然后可以使用object.assign
更新其属性:
const state={
项目:[{
id:“哈科”,
姓名:“哈里斯”
},
{
id:“Benko”,
姓名:“本约”
}]
}
常数a={
id:“Benko”,
姓名:“本加尔卡”
}
const foundObject=state.items.find(obj=>obj.id==a.id);
分配(foundObject,a);
console.log(状态)代码>Lodash merge()适用于我的用例:
let v = {foo: [{change: "first", leave: "here"}]}
_.merge(v, {foo: [{change: "second"}]})
合并后v的值:
{ foo: [{change: "second", leave: "here"}]
与Object.assign()比较,后者将用第二项替换数组中的第一项:
Object.assign(v, {foo: [{change: "second"}]})
之后的v值(缺少离开道具):
Object.assign(v, {foo: [{change: "second"}]})
{ foo: [{change: "second"}] }