我有 2 个对象数组:
const arr1 = [{'id':'1' 'value':'yes'}, {'id':'2', 'value':'no'}];
const arr2 = [{'id':'2', 'value':'yes'}];
所以,如果我尝试合并这两个数组,结果应该是:
arrTemp = [{'id':'1', 'value':'yes'}, {'id':'2', 'value':'yes'}];
基本上,它的工作方式应该与 Object.assign() 类似,但无论我如何尝试,它都不起作用。谁能帮我解决这个问题?
我修改了数据结构。现在是否可以合并它们并获得输出。
谢谢
最佳答案
这就是使用 ES6 spread、reduce 和 Object.values 完成工作的方法。
const arr1 = [{
'id': '1',
'value': 'yes'
}, {
'id': '2',
'value': 'no'
}];
const arr2 = [{
'id': '2',
'value': 'yes'
}];
const result = Object.values([...arr1, ...arr2].reduce((result, {
id,
...rest
}) => {
result[id] = {
...(result[id] || {}),
id,
...rest
};
return result;
}, {}));
console.log(result);
关于javascript - es6 合并两个对象数组并覆盖现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554688/