H5W3
当前位置:H5W3 > 问答 > 正文

关于合并数组对象的问题

// 数组 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 » 关于合并数组对象的问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址