Javascript 如何组合/组合多个与单个对象同名的对象(嵌套)
我有一个学生的数据和他们在不同学科的成绩作为一个对象数组。当两个对象的名称相同时,我需要将数据合并为单个对象,以便每个学生只有一条记录。示例数据的一个示例:Javascript 如何组合/组合多个与单个对象同名的对象(嵌套),javascript,json,node.js,underscore.js,lodash,Javascript,Json,Node.js,Underscore.js,Lodash,我有一个学生的数据和他们在不同学科的成绩作为一个对象数组。当两个对象的名称相同时,我需要将数据合并为单个对象,以便每个学生只有一条记录。示例数据的一个示例: { data: [{ "name: xxx, "createdDate:10/01/2018, subj1: 20, subj2: 40 }, { "name: xxx, "createdDate:10/11/2017, subj1: 4
{
data: [{
"name: xxx,
"createdDate:10/01/2018,
subj1: 20,
subj2: 40
},
{
"name: xxx,
"createdDate:10/11/2017,
subj1: 40,
subj2: 70
},
{
"name: yyy,
"createdDate:10/01/2018,
subj1: 20,
subj2: 40
}]
}
我需要把它转换成这样:
{
data: [
{
name: xxx,
subj1: [20, 40],
subj2: [70, 40]
},
{
name: yyy,
subj1: [20],
subj2: [40]
}
]
}
如何在节点js
中实现这一点。只有通过循环,我才能做到这一点,或者有一种简单的方法可以通过使用lodash、js等库来实现这一点 您可以使用并执行以下操作:
let sampleData={
数据:[{
名称:“xxx”,
创建日期:2018年1月10日,
第1:20节,
主题2:40
},
{
名称:“xxx”,
创建日期:2017年11月10日,
附文1:40,
主题2:70
},
{
名称:“yyy”,
创建日期:2018年1月10日,
第1:20节,
主题2:40
}]
};
让排序=sampleData.data.sort((element1,element2)=>{
返回元素1.name{
if(累加器.data.length==0){
accumulator.data.push({name:currentValue.name,subc1:[currentValue.subc1],subc2:[currentValue.subc2]});
回流蓄能器;
}否则{
if(acculator.data[acculator.data.length-1].name==currentValue.name){
acculator.data[acculator.data.length-1].subc1.push(currentValue.subc1);
acculator.data[acculator.data.length-1].subc2.push(currentValue.subc2);
}否则{
accumulator.data.push({name:currentValue.name,subc1:[currentValue.subc1],subc2:[currentValue.subc2]});
}
回流蓄能器;
}
},{数据:[]})
console.log(已排序)
此文件的可能重复项仅返回与我的相同的值input@GopiNath哎呀!我的坏!虽然我已经根据你的问题更新了我的答案。@ Gopina,如果答案对你有用,就如这里所展示的,请考虑接受/投票。