把同级的数组对象转成树状,并且如下:“目标1和目标2”都属于“分类1”,那么数组里只显示一个“分类1”的对象
let arr = [
{
id: 1,
name: 'aaa',
standard: 0,
status: 0,
targetName: '目标1',
target: 2,
typeName: '分类1',
type: 1
},
{
id: 2,
name: 'bbb',
standard: 0,
status: 0,
targetName: '目标2',
target: 3,
typeName: '分类1',
type: 1
},
{
id: 3,
name: 'ccc',
standard: 0,
status: 0,
targetName: '目标2',
target: 3,
typeName: '分类2',
type: 2
},
{
id: 4,
name: 'ddd',
standard: 0,
status: 0,
targetName: '目标1',
target: 2,
typeName: '分类2',
type: 2
}
]
let arr1 = [{
type: 1,
typeName: '分类1',
targetList: [{
target: 2,
targetName: '目标1',
nameList: [{
id: 1,
name: 'aaa'
}]
},
{
target: 3,
targetName: '目标2',
nameList: [{
id: 2,
name: 'bbb'
}]
}]
},{
type: 2,
typeName: '分类2',
targetList: [{
target: 2,
targetName: '目标1',
nameList: [{
id: 4,
name: 'ddd'
}]
},
{
target: 3,
targetName: '目标3',
nameList: [{
id: 3,
name: 'ccc'
}]
}
]
}
]
const result = Object.values(
list.value.reduce((acc, cur) => {
if (!acc[cur.type]) {
acc[cur.type] = {
type: cur.type,
typeName: cur.typeName,
targetList: []
}
}
const targetObj = acc[cur.type].targetList.find((item) => item.target === cur.target)
if (targetObj) {
targetObj.nameList.push({
id: cur.id,
name: cur.name
})
} else {
acc[cur.type].targetList.push({
target: cur.target,
targetName: cur.targetName,
nameList: [
{
target: cur.id,
name: cur.name
}
]
})
}
return acc
}, {})
)
console.log(result)