一
初始数组格式:firstArr = [
{
titleCode:'101',
aa:111
},
{
titleCode:'102',
aa:222
},
{
titleCode:'103',
aa:333
},
{
titleCode:'104',
aa:444
},
]
期望数据格式:
finaArr = [
{name:'名字1',
orign:[{
titleCode:'101',
aa:111,
orign:[
{
titleCode:'102',
aa:222
}]}]
},
{name:'名字2',
orign:[{
titleCode:'102',
aa:111,
orign:[
{
titleCode:'104',
aa:222
}]}]
},
{name:'名字3',
orign:[]
},
]
二、
arrConversion(arr) {
const subList = [{ name: '名字1', orign: [] },
{ name: '名字2', orign: [] }, { name: '名字3', orign: [] }]
arr.map((item) => {
if (item.titleCode === '101'
|| item.titleCode === '104' || item.titleCode === '106'
|| item.titleCode === '107') {
item.orign = []
subList[0].orign.push(item)
} else {
subList[0].orign.map((hitem) => {
if (hitem.titleCode === '101' &&
(item.titleCode === '102' || item.titleCode === '103')) {
hitem.orign.push(item)
} else if (hitem.titleCode === '104' &&
(item.titleCode === '105')) {
hitem.orign.push(item)
}
})
}
if (item.titleCode === '108'
|| item.titleCode === '110' || item.titleCode === '112'
|| item.titleCode === '114') {
item.orign = []
subList[1].orign.push(item)
} else {
subList[1].orign.map((hitem) => {
if (hitem.titleCode === '108' && item.titleCode === '109') {
hitem.orign.push(item)
} else if (hitem.titleCode === '110' && item.titleCode === '111') {
hitem.orign.push(item)
} else if (hitem.titleCode === '112' && item.titleCode === '113') {
hitem.orign.push(item)
} else if (hitem.titleCode === '114' &&
(item.titleCode === '115' || item.titleCode === '116')) {
hitem.orign.push(item)
}
})
}
if (item.titleCode !== '101' && item.titleCode !== '102'
&& item.titleCode !== '103' && item.titleCode !== '104'
&& item.titleCode !== '105' && item.titleCode !== '106'
&& item.titleCode !== '107' && item.titleCode !== '108'
&& item.titleCode !== '109' && item.titleCode !== '110'
&& item.titleCode !== '111' && item.titleCode !== '112'
&& item.titleCode !== '113' && item.titleCode !== '114'
&& item.titleCode !== '115' && item.titleCode !== '116') {
item.orign = []
subList[2].orign.push(item)
}
}
)
return subList
},
三、
this.finaArr = this.arrConversion(this.firstArr) //方法调用
四、三维数组转一维数组方法
flatten(arr) {
return [].concat(...arr.map((item) => {
if (item.orign) {
const arr = [].concat(item, ...this.flatten(item.orign))
delete item.orign
return arr
}
return [].concat(item)
}
))
},
五、
const newOneArr = this.flatten(this.finaArr)
this.newOneList = newOneArr.filter(function (item) {
return !item.name //过滤字段有name的对象
})