let data2 = [{
id: "5",
name: "桃子",
num: 1,
},{
id: "1",
name: "橘子",
num: 1,
}, {
id: "2",
name: "苹果",
num: 1,
}, {
id: "3",
name: "梨",
num: 1,
}, {
id: "4",
name: "土豆",
num: 1,
}, {
id: "6",
name: "洋芋",
num: 7,
},{
id: "7",
name: "桃子",
num: 8,
}]
// 创建新数组接收
let newdata = []
// 循环原本的数组
data2.forEach((item,index,arr)=>{
// 判断新数组中有没有当前元素item,没有的往下执行会添加
if(newdata.some((item2,index2)=>{
// newdata有一个同名就会反true
if(item.name == item2.name){
return true
}
})===false){ // 添加及合并操作:
// 将当前元素填入新数组中
newdata.push(item)
// 并且循环原本数组去判断当前元素item的其他同名元素,去合并
arr.forEach((item3,index3)=>{
// 如果有同名元素,但是索引不同,就把num合并
if(item.name == item3.name&&index!==index3){
// 同名元素在新数组中一定是最后一位
newdata[newdata.length-1].num += item3.num
}
})
// 因为每次循环会判断新数组是否有同名元素,所以后面的同名元素会跳过这部分操作
}
})
08-02
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交