使用js根据数组对象中某个相同字段的对象,筛选出来放到新的数组

362 阅读1分钟

如下代码

// 处理前数据,需要将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])
}