根据数组内某一个值合并数组对象、或者某个值求和

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
var arr = [
{szm:'A',list:[{nm:1,id:1}]},
{szm:'B',list:[{nm:2,id:2}]},
{szm:'A',list:[{nm:'i',id:'o'}]},
{szm:'C',list:[{nm:1,id:1}]}
] ,
all = [];
for(var i = 0 ; i < arr.length; i++){
var tmp = arr[i].szm;
var jg = {szm:tmp,list:[{nm:arr[i].list[0].nm,id:arr[i].list[0].id}]};
if( check(tmp) ){ //新加首字母szm
all.push( jg )
}else{
//已有szm 追加
for(var t = 0; t<all.length; t++){
if(all[t].szm == tmp){
all[t].list.push( {nm:arr[i].list[0].nm,id:arr[i].list[0].id});
}
}
}
};
function check(tmp) {
for(var t = 0; t < all.length; t++){
if( all[t].szm == tmp ){
return false
}
}return true;
};
console.log(all);

// 根据name字段合并后面的num
var cart = [
{name:'ab',num:10},
{name:'ac',num:8},
{name:'ab',num:10},
{name:'ab',num:1}
],
newcart = [];
for(var i = 0; i < cart.length; i++){
var name = cart[i].name;
var tmpval = { name:name,num:cart[i].num } ;
if( checkname(name) ){
newcart.push( tmpval )
}else{
for( var e = 0; e<newcart.length; e++ ){
if( newcart[e].name == name ){
newcart[e].num += cart[i].num;
}
}
}
}
function checkname(name) {
for(var t = 0; t< newcart.length;t++){
if(newcart[t].name === name){
return false;
}
}return true;
};
console.log( newcart)
</script>
</body>
</html>
posted @ 2019-09-04 13:47  忧伤还是快乐i  阅读(1504)  评论(0编辑  收藏  举报