2016-11-04 87 views
2
与对象的对象合并数组

我试图合并对象的数组,它使用Object.assign()使用Object.assign

var state = { 
    items: [{ 
     id: "Harko", 
     name: "Haris" 
    }, 
    { 
     id: "Benko", 
     name: "Benjo" 
    }] 

} 

var a = { 
    id: "Benko", 
    name: "Bengalka" 
} 

对象我已经试过什么:

Object.assign(state.items,a); 
Object.assign({}, { items: [state.items,a]); 

我想要得到的是以下几点:

{ 
    items: [{ 
     id: "Harko", 
     name: "Haris" 
    }, 
    { 
     id: "Benko", 
     name: "Bengalka" 
    }] 
} 

所以我想在VAR状态对象ID为“缤果”被覆盖b y var a,因为他们有相同的id。

这是可能与Object.assign?

任何形式的帮助将不胜感激。

感谢

回答

4

你不能真正做到这一点,在顶层使用Object.assign。你需要做的是find对象引用第一,那么你可以使用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);

+0

谢谢!而已。 –

相关问题