2024.3.19今天我学习了如何对重复数据进行合并,数据格式如下:
const data= [
{ name: '张三', value: 2 },
{ name: '李四', value: 1 },
{ name: '张三', value: 1 },
{ name: '李四', value: 3 },
{ name: '张三', value: 1 }
];
当我们存在这样的数组的情况时,我们需要对重复name进行合并,然后value是合并之后的累加值。
一、定义一个空对象,判断该对象中是否存在当前name
const mergerd_data = {} //定义空对象
data.forEach(item=>{
if(mergerd_data[item.name]){//如果name已经存在空对象中
mergerd_data[item.name].value += item.value //累加value值
}
})
二、如果不存在name在这个空对象中,就创建
const mergerd_data = {} //定义空对象
data.forEach(item=>{
if(mergerd_data[item.name]){//如果name已经存在空对象中
mergerd_data[item.name].value += item.value //累加value值
}else{
mergerd_data[item.name] = {name:item.name,value:item.value}//创建新对象
}
})
三、将对象组转换成数组
const merged_array = Object.values(merged_data)
四、完整代码如下:
const data= [
{ name: '张三', value: 2 },
{ name: '李四', value: 1 },
{ name: '张三', value: 1 },
{ name: '李四', value: 3 },
{ name: '张三', value: 1 }
];
const mergerd_data = {} //定义空对象
data.forEach(item=>{
if(mergerd_data[item.name]){//如果name已经存在空对象中
mergerd_data[item.name].value += item.value //累加value值
}else{
mergerd_data[item.name] = {name:item.name,value:item.value}//创建新对象
}
})
const merged_array = Object.values(merged_data)