JavaScript 对象数组筛选不同元素

let arr = [
			{id:"1",name:'项目A',zh:'001',lz:'0001'},
			{id:"1",name:'项目A',zh:'002',lz:'0001'},
			{id:"1",name:'项目A',zh:'003',lz:'0001'},
			{id:"2",name:'项目B',zh:'001',lz:'0001'},
			{id:"2",name:'项目B',zh:'002',lz:'0002'},
			{id:"2",name:'项目B',zh:'002',lz:'0003'},
			{id:"2",name:'项目B',zh:'002',lz:'0004'},
			{id:"3",name:'项目C',zh:'003',lz:'0001'},
			{id:"3",name:'项目C',zh:'003',lz:'0002'},
			{id:"3",name:'项目C',zh:'004',lz:'0001'},
			{id:"4",name:'项目D',zh:'001',lz:'0001'},
		]
// 1. 现根据id,对不同进行项目分组
const result = arr.reduce((acc, cur) => {
	  const index = acc.findIndex(item => item[0].id === cur.id);
	  if (index === -1) {
		 acc.push([cur]);
	  } else {
		acc[index].push(cur);
	  }
		return acc;
	  }, []);
  console.log(result);

// 2.再根据不同的 'zh' 计算不同的元素,有多少不同楼幢
		let num = 0
		if(result.length>0){
			// for (let i = 0; i < result.length; i++) {
			// 	const obj = {} //  中间值 转换数据
			// 	num += result[i].reduce((pre,cur)=>{
			// 		obj[cur['zh']] ? '' : (obj[cur['zh']] = true && pre.push(cur));
					 
			// 		return pre
			// 	},[]).length
			// }
			result.forEach(item=>{
				const obj = {} //  中间值 转换数据
				num += item.reduce((pre,cur)=>{
					obj[cur['zh']] ? '' : (obj[cur['zh']] = true && pre.push(cur));
					return pre
				},[]).length
			})
		}
		console.log(num);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值