es6 同一数组内相同元素合并处理
源数据
arr = [
{ id: 1, name: '张三', number: 11 },
{ id: 2, name: '李四', number: 22 },
{ id: 1, name: '张三', number: 22 },
{ id: 3, name: '王五', number: 44 },
{ id: 2, name: '李四', number: 11 },
]
实现效果
b = [
{ id: 1, name: '张三', number: 33 },
{ id: 2, name: '李四', number: 33 },
{ id: 3, name: '王五', number: 44 },
]
方法
dataChange(arr) {
// 设置一个对象放id 一个数组放处理后的数据
let a = {}
let b = []
// 深拷贝源数据
let arrs = JSON.parse(JSON.stringify(arr))
// 循环遍历原始数据
arrs.forEach((item) => {
// 判断item.id 是否存在在 a 中 无则直接push进b
if (!a[item.id]) {
// 直接push b
b.push(item)
// 将 对象塞进 a中
a[item.id] = item
} else {
// a中存在 则对b 进行累加
b.forEach((ss) => {
if (ss.id === item.id) {
ss.number = (
parseFloat(ss.number) + parseFloat(item.number)
).toString()
}
})
}
})
this.$nextTick(() => {
console.log(b);
})
},