2016-11-04 60 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

謝謝!而已。 –