通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

在日常开发的时候,我们有时候会遇到这样的需求,
要求把具有相同属性名的对象进行合并,如下例子所示

<script>
    var arrayName = [{
        "id":"1",
        "name":"小明",
        "course":"语文"
    }, {
        "id":"2",
        "name":"小张",
        "course":"政治"
    }, {
        "id":"1",
        "name":"小明",
        "course":"历史"
    }, {
        "id":"3",
        "name":"小王",
        "course":"数学"
    }, {
        "id":"4",
        "name":"小李",
        "course":"政治"
    }, {
        "id":"5",
        "name":"小红",
        "course":"语文"
    }, {
        "id":"3",
        "name":"小王",
        "course":"化学"
    },{
        "id":"1",
        "name":"小明",
        "course":"物理"
    }]

    //设置两个不同的数组,
    //一个数组存放所有的id,如果id重复,则进行不同的操作。
    //另一个数组存放新的对象数组
    //  思路
    //通过对之前的数组的循环,进行判断处理,
    //把不存在相同id的对象(即判断indexOf的值是否为-1)放入新的数组内。
    //如果不等于-1,则代表存在相同的id值,这是,就把相同id值的对象,需要合并的值进行合并
    //放入到新的数组内。
    //这样就可以解决问题了。

    var idArray = [];
    var newAarray = [];  

    arrayName.forEach(function (ele, i) {

        if (idArray.indexOf(arrayName[i].id) === -1) {

            newAarray.push({
                'id':arrayName[i].id,
                'name': arrayName[i].name,  
                'course': [arrayName[i].course]
            })

            idArray.push(arrayName[i].id);

        }else {

            newAarray.forEach(function (dom,k) {
                if (newAarray[k].id == arrayName[i].id) {
                    newAarray[k].course.push(arrayName[i].course)  //把具有相同id的course值进行合并
                }
            })

        }
    })

    console.log(newAarray)


</script>

数据处理后的效果图

在这里插入图片描述

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值