js数组中对象存在相同键就合并

这是我的初始数据

        var arr = [{
                name: 'cny',
                money: 12
            },
            {
                name: 'cny',
                money: 12
            },
            {
                name: 'cey',
                money: 12
            },
            {
                name: 'cky',
                money: 12
            },

        ]

目标数据(其实就是希望name都为cny的合并一下总金额)

       var arr1 = [{
                name: 'cny',
                money: 24
            },
            {
                name: 'cey',
                money: 12
            },
            {
                name: 'cky',
                money: 12
            },

代码

    var newData = [];
        var newObj = {};
        arr.forEach((element,index)=>{
            if(!newObj[element.name]){
                newData.push(element)
              //这里需要记录一下每一个name所对应的索引,这样相同的时候就知道相同name它的索引是多少
            //同时这里加1是为上面的判断if(!0) 这样就是true了 显然逻辑是不对的。
                newObj[element.name] = index+1;
             
            }else{
                // 说明已经存在了
              
                newData[newObj[element.name]-1].money += arr[index].money;
            }
        })
        console.log(newData)

你可能感兴趣的:(js数组中对象存在相同键就合并)