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