数组对象中某个值相同的按照不同的规则合并

1.原数组

[{"city":"平顶山","cell_level":"A","num":10.75},
{"city":"平顶山","cell_level":"B","num":10.75},
{"city":"平顶山","cell_level":"C","num":10.75},
{"city":"平顶山","cell_level":"D","num":10.75},
{"city":"平顶山","num":10.75}.......]

2.想要的数组

[{"city":"平顶山","A-cell_level":"A","A-num":10.75,"B-cell_level":"B","B-num":10.75,"C-cell_level":"C","C-num":10.75,"D-cell_level":"D","D-num":10.75,"cell_level":"ABCD","num":10.75},
{"city":"郑州","A-cell_level":"A","A-num":10.75,"B-cell_level":"B","B-num":10.75,"C-cell_level":"C","C-num":10.75,"D-cell_level":"D","D-num":10.75,"cell_level":"ABCD","num":10.75}]

3.js

//原数组:arr
//新数组:result
//按照abcd判断的函数:judge
//obj 数组里面不同的值的名称
var objarr=[
				[{f:'cell_level',n:'小区级别'},{f:'num1',n:'小区数量'}],
				[{f:'cell_level',n:'小区级别'},{f:'ctznum',n:'xx小区数量'}],
				[{f:'cell_level',n:'小区级别'},{f:'cxnum',n:'xx小区数量'}],
				[{f:'cell_level',n:'小区级别'},{f:'zeronum',n:'xx小区数量'}],
				[{f:'cell_level',n:'小区级别'},{f:'downum',n:'xx低流量小区数量'}]
		]
var result=[],h=1;//判断不同值的名称
var obj=objarr[h]
arr.forEach(item=> {
    let flag = result.find(item1=>  item1.city === item.city )
    if (!flag) {
    	var ob=item;
    	judge(item,obj,ob);
    	result.push(ob)
    } else {
    	judge(item,obj,flag)
    }
  })
console.log(result)
//判断函数
function judge(item,obj,flag){
		if(item.cell_level==='A'){
			for(var k=0;k<obj.length;k++){
				flag['A-'+obj[k].f]=item[obj[k].f]
			}
		}else if(item.cell_level==='B'){
			for(var k=0;k<obj.length;k++){
				flag['B-'+obj[k].f]=item[obj[k].f]
			}
		}else if(item.cell_level==='C'){
			//console.log(item)
			for(var k=0;k<obj.length;k++){
				flag['C-'+obj[k].f]=item[obj[k].f]
			}
		}else if(item.cell_level==='D'){
			for(var k=0;k<obj.length;k++){
				flag['D-'+obj[k].f]=item[obj[k].f]
			}
		}else{
			for(var k=0;k<obj.length;k++){
				flag[obj[k].f]=item[obj[k].f];
			};
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值