如何将数组与对象进行比较

时间:2017-06-01 11:55:08

标签: javascript typescript

我有以下数据

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

但这会导致重复的值。我做错了任何人都可以帮助我。谢谢。         }

因此我希望我的最终数组像

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

2 个答案:

答案 0 :(得分:0)

你可以这样做:
你可以在一个循环中完成它,因为你提到object无论如何都是从array获得的。迭代数组并获取数组元素key使用该键从对象读取并使用该读取值更新数组元素。

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以迭代数组并检查更新对象中是否存在密钥。然后更新value属性。

&#13;
&#13;
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;