把一个数组对象,按照对象的一个属性或者多个属性进行分组

本文描述了一种针对购物车列表的需求,采用reduce函数实现的分组方法,将商品分为本人购买和代下单两类,再按供应商、下单人等属性细分,处理了过多分组的问题。
摘要由CSDN通过智能技术生成

需求,购物车列表要按照,本人商品和代下单商品分类,然后再按照供应商分组。其中代下单商品还要先按照,下单人,选购人,部门,收货地址,责任中心分组,有一项不同就分一个组。分组太多了,写了一个方法,用到了reduce

//按照供应商分组

groupFunction(data){

let arr=[]

let groups=data.reduce((group,sepecification)=>{

let key=sepecification.supllierCode //供应商code

if(!group[key]){

group[key]=[]

}

group[key].push(sepecification)

return group

})

//处理成自己想要的数据

for(let key in groups){

groups['taxAmount'+key]=0

arr.push({

channelId:groups[key][0].channelId

supplierName:groups[key][0].supplierName,

supplierCode:key,

taxAmount:groups['taxAmount'+key],

children:groups[key],

allCheckes:true,

})

}

},

//把代下单判断是否同一部门,机构,选购人,收货人,收货地址,责任中心划分

groupReplace(data){

let arr=[]

let groups=data.reduce((group,sepecification)=>{

let key=sepecification.replaceUserName+

sepecification.center.centerCode+

sepecification.addressUserName+

sepecification.address+

sepecification.replaceOrgName+

sepecification.replaceDeptName

if(!group[key]){

group[key]=[]

}

group[key].push(sepecification)

return group

})

//处理成自己想要的数据

for(let key in groups){

let address=JSON.parse(groups[key][0].address)

let obj={

isShow:false,

replaceAll:0,

replaceChildren:groups[key],

allCheckeds:true,

replaceOrgName:groups[key][0].replaceOrgName,

replaceDeptName:groups[key][0].replaceDeptName,

replaceUserName:groups[key][0].replaceUserName,

addressUserName:groups[key][0].addressUserName,

centerName:groups[key][0].enterName,

showAddress:'',

detail_address:'',

}

if(address){

for(let i=0;i<Object.keys(adress).length-1;i++){

obj.showAddress+=address['area'+i].name

}

obj.detail_address=address['detail_address']

}

arr.push(obj)

}

},

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值