对象数组某个属性值相同的数据合并
在开发过程中,遇见后台传递的对象数组数据太散的时候,我们需要重构数据使用,借鉴两种方法来合并数据,总结如下:
//需要处理的数据
result: [
{ name: 'a', score: 80 },
{ name: 'b', score: 90 },
{ name: 'c', score: 60 },
{ name: 'a', score: 50 },
{ name: 'b', score: 66 }
]
方法一 将相同name字段属性的对象放入children的数组中,生成一个新的对象数组
// 相同数据整合
handlerDatas(arr){
const obj = {};
arr.forEach((item, index) => {
const { name} = item; //解构赋值
if (!obj[name]) {
obj[name] = {
name,
children: []
}
}
obj[name].children.push(item);
});
合并后的数据如下
data:[
{name: 'a', children:[{name:'a', score: 80},{ name: 'a', score: 50 }]},
{name: 'b', children:[{name:'b', score: 90},{ name: 'b', score: 66 }]},
{name: 'c', children:[{name:'c', score: 60}]}
]
方法二 将相同name字段属性对象的score值相加并剔除多余数据
handlerDatas(arr){
const data = array.map(function(item, index, arr) {
const i = arr.find(_item => item.name === _item.name);
if (i !== item) {
i.score += item.score
return undefined;
} else {
return i;
}
}).filter(item => item !== undefined);
return data
}
合并后的数据如下
data:[ {name: 'a', score: 130}, {name: 'b', score: 156}, {name: 'c', score: 60} ]
posted on 2023-11-06 15:52 ranyonsue 阅读(1253) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2020-11-06 react useRef()函数
2020-11-06 setTimeout、同步、异步的理解