js把name和key相同的把value相加组成新的json对象,其余的保留 。感谢!

var arr1 = [
{name: "萧何", key: "屌丝", value: 52},
{name: "萧何", key: "屌丝", value: 22},
{name: "张良", key: "高富帅", value: 52},
{name: "韩信", key: "纯屌丝", value: 66},
{name: "韩信", key: "纯屌丝", value: 61},
{name: "刘邦", key: "屌丝", value: 55},
...
];

//结果
var arr2 = [
{name: "萧何", key: "屌丝", value: 74},
{name: "张良", key: "高富帅", value: 52},
{name: "韩信", key: "纯屌丝", value: 127},
{name: "刘邦", key: "屌丝", value: 55},
...
]

<script type="text/javascript">
var arr = [
{name: "萧何", key: "屌丝", value: 52},
{name: "萧何", key: "屌丝", value: 22},
{name: "张良", key: "高富帅", value: 52},
{name: "韩信", key: "纯屌丝", value: 66},
{name: "韩信", key: "纯屌丝", value: 61},
{name: "刘邦", key: "屌丝", value: 55},
];
function test(arr) {
    var newarray = [];
    var checkarray=[];
    arr.forEach(function(value,keyindex){
        if(newarray.length==0){
            newarray.push(value);
            checkarray.push(value.name);//根据name去重判断
        }else{
            newarray.forEach(function(valueIndex,keyindex){
                if(valueIndex.name==value.name&&valueIndex.key==value.key){
                    valueIndex.value+=value.value;
                }else if($.inArray(value.name,checkarray)==-1){
                //避免相同name数据重复
                    newarray.push(value);
                    checkarray.push(value.name);
                    $.unique(newarray);
                    $.unique(checkarray);

                }
            })          
        }


    })
    return newarray;
}
console.log(test(arr))

</script>

//经过123楼以及度娘启发:

var arr = [
{name: "萧何", key: "屌丝", value: 52},
{name: "萧何", key: "屌丝", value: 22},
{name: "张良", key: "高富帅", value: 52},
{name: "韩信", key: "纯屌丝", value: 66},
{name: "韩信", key: "纯屌丝6", value: 61},
{name: "刘邦", key: "屌丝", value: 55},
];
function trans(arr){
var result = [];
for(var i = 0; i < arr.length; i++) {
var sum = arr[i].value;
var arrOld = arr.concat([]);
for(var j = arr.length - 1; j > i; j--) {

            if(arr[i].name === arr[j].name&&arr[i].key === arr[j].key) {
                sum += arr[j].value;
                arrOld.splice(j, 1);
            }
        }
        arr = arrOld;
        result.push({
            name:arr[i].name,
            key:arr[i].key,
            value:sum
        });
       // console.log(arr[i].name,arr[i].key,sum)
    }
    return result;
}
console.log(trans(arr))

思路:
1、创建一个新数组用于存储相同name+key的对象;
2、在自己数组中进行遍历判断name+key是否一致,一致从数组中移除并value值相加放到新数组中。
3、遍历两个数组,判断name+key是否一致,一致从两个数组中直接移除并value值相加放到新数组。

一楼说的对,再弄个新集合。