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"}] }