2017-06-08 54 views
0

我看到_.zip合併兩個基於索引的列表,但是我想按鍵合併。這兩個列表不一定排序/索引,但將有例如相同數量的對象通過對象中的鍵合併兩個列表

list1 = [{id:"1", field1:"field1val"},...] 
list2 = [{id:"1", field2:"field2val"},...] 

合併會是什麼樣子:

mergeOfList1List2 = [{id:"1", field1:"field1val", field2:"field2val"},...] 
+0

一旦我有一對對象,然後我會看看東西李ke_.extend(pair [1] .toJSON(),pair [0]) – Fazeel

+0

[如何通過鍵合併兩個對象值](https://stackoverflow.com/questions/18498801/how-to-合併兩對象值逐鍵) –

回答

0

您可以比較和合並是這樣的。雖然它不是通用的,它會在你的情況

list1 = [{id:"1", field1:"field1val"},{id:"2", field1:"abc"}] 
 
list2 = [{id:"1", field2:"field2val"}] 
 

 
for(var i=0; i<list2.length; i++){ 
 
    for(var j=0; j<list1.length; j++){ 
 
    if(list1[j].id === list2[i].id){ 
 
     list1[j].field2 = list2[i].field2 
 
    } 
 
    } 
 
} 
 

 
console.log(list1)

工作更好的解決方案是這樣的,因爲這將完全(聯盟)相結合的對象,即使有更多的屬性

list1 = [{id:"1", field1:"field1val"},{id:"2", field1:"abc"}] 
 
list2 = [{id:"1", field2:"field2val"}] 
 

 
for(var i=0; i<list2.length; i++){ 
 
    for(var j=0; j<list1.length; j++){ 
 
    if(list1[j].id === list2[i].id){ 
 
     Object.assign(list1[j],list2[i]) // to union two objects 
 
    } 
 
    } 
 
} 
 

 
console.log(list1)