// 数组 1
let a = [{
name: 'a',
number: '1'
}, {
name: 'b',
number: '3'
}
// 数组 2
let b = [{
name: 'a',
number: '2'
}, {
name: 'b',
number: '3'
}, {
name: 'c',
number: '4'
}
我的代码如上示例,我现在想把代码合并为如下格式:
let a = [{
name: 'a',
number: '3'
}, {
name: 'b',
number: '6'
}, {
name: 'c',
number: '4'
}
尝试实现代码:
let obj = []
for (let n = 0; n < a.length; n++) {
for (let i = 0; i < b.length; i++) {
if (a[n].name == b[i].name) {
obj.push(a[n])
} else {
obj.push(b[i])
}
}
}
但是运行中发现,运行结果错误,排查问题出在else
中
请问如何解决,还望指点谢谢!
a.concat(b).reduce((res, item) => {
let exists = res.find(w => w.name === item.name);
if (!exists) {
exists = { name: item.name, number: 0 };
res.push(exists);
}
exists.number += Number(item.number);
return res;
}, []);
回答
本文地址:H5W3 » 关于合并数组对象的问题