2017-06-01 86 views
0

我有像下面如何與對象比較陣列

var array = [ 
    {'id':'2', 'key':'test1', 'value':'val1'}, 
    {'id':'2','key':'test2','value':'val2'} 
] 

我有一個對象 - 它是上述陣列的編輯的數據的結果的數據

var object = {'test1':'newval1','test2':'newval2'} 

現在我需要比較我的「對象」與「數組」,並追加ID它和它作爲

var finalArray = [ 
    {'id':'2','key':'test1','value':'newval1'}, 
    {'id':'2','key':'test2','value':'newval2'} 
] 

準備實施這個我試過這個

for(var i = 0;i < array.length;i++) { 
     for (var key in object) { 
      if(array[i].key == key) { 
       this.toUpdateData['key'] = array[i].key; 
       this.toUpdateData['value'] = object[key]; 
       this.toUpdateData['id'] = array[i].id; 
       this.finalArray.push(this.toUpdateData); 
       delete this.data[key]; 
      } 
     } 

但是,這導致了重複values.I做錯了任何人都可以oplease幫助me.Thanks。 }

所以我想我喜歡

var finalArray = [ 
    {'id':'2','key':'test1','value':'newval1'}, 
    {'id':'2','key':'test2','value':'newval2'} 
] 
+0

隱蔽目的是它的陣列形式和寫入,可以比較兩個陣列的功能。 – Halcyon

+1

您提出的問題與角度或任何其他框架無關。請僅使用相關標籤 – echonax

+0

您的問題是什麼? –

回答

0

最後一個數組你可以這樣做:
你可以做到這一點的只有一個循環,因爲你提到object反正是從array獲得。迭代數組並獲取數組元素的key使用該鍵從對象中讀取並使用該讀取值更新數組元素。

var array = [{'id':'2','key':'test1','value':'val1'},{'id':'2','key':'test2','value':'val2'}]; 
 
var object = {'test1':'newval1','test2':'newval2'}; 
 

 
for(var i=0;i<array.length;i++) { 
 
    var key = array[i].key; 
 
    array[i].value = object[key]; 
 
} 
 

 
console.log(array);

0

你可以遍歷數組,並檢查關鍵的更新對象存在。然後更新值屬性。

var array = [{ id: '2', key: 'test1', value: 'val1' }, { id: '2', key: 'test2', value: 'val2' }], 
 
    object = { test1: 'newval1', test2: 'newval2' }; 
 
    
 
array.forEach(function (a) { 
 
    if (a.key in object) { 
 
     a.value = object[a.key]; 
 
    } 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }