Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何组合/组合多个与单个对象同名的对象(嵌套)_Javascript_Json_Node.js_Underscore.js_Lodash - Fatal编程技术网

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,如果答案对你有用,就如这里所展示的,请考虑接受/投票。