如下代码
// 处理前数据,需要将label相同的字段筛选到新的数组
const arr = [{
label:'汤臣一品',
value:111,
arg:{name:'小明',age:1}
},{
label:'汤臣一品',
value:222,
arg:{name:'小红',age:2}
},{
label:'苹果园小区',
value:333,
arg:{name:'小刚',age:4}
}]
// 处理结果
const newArr = [{
label: '汤臣一品',
child: [{
label: '汤臣一品',
value: 111,
arg: {name: '小明', age: 1}
}, {
label: '汤臣一品',
value: 222,
arg: {name: '小红', age: 2}
}]
}, {
label: '苹果园小区',
child: [{
label: '苹果园小区',
value: 333,
arg: {name: '小刚', age: 4}
}]
}]
let dataInfo1 = {}
arr.forEach((item: any) => {
let {label} = item
if (!dataInfo1[label]) {
dataInfo1[label] = {
label: label,
child: []
}
}
dataInfo1[label].child.push(item)
})
let newArr = []
for (let key in dataInfo1) {
newArr.push(dataInfo1[key])
}