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值相加放到新数组。
一楼说的对,再弄个新集合。