//初始数据
var data = [
{id: 2, parentId: 1},
{id: 1},
{id: 3, parentId: 2},
{id: 5, parentId: 4},
{id: 4},
]
//处理后的数据
/*[
{
id: 1,
child: [{
id: 2,
parentId: 1,
child: [{
id: 3,
parentId: 2
}]
}]
},
{id: 4, child: [{id: 5, parentId: 4}]},
]*/
function returnData(arr){
//初始没有上级的数据和
let parents = arr.filter( item => !item.parentId)
//初始有上级的数据和
let childs = arr.filter(item => item.parentId)
//递归处理数据
function newData(parents,childs){
parents.forEach( (item,index) => {
childs.forEach( (child,childIndex) => {
if(item.id === child.parentId){
let newChilds = JSON.parse(JSON.stringify(childs))
newChilds.splice(childIndex,1) //删除已经存在的数据
item.childs = item.childs ? item.childs.push(child) : [child]
newData( [child] , newChilds )
}else{
return false
}
})
})
}
newData( parents , childs )
return parents
}
let a = []
console.log(a = returnData(data))
js合并数据递归格式,[{id: 2, parentId: 1},{id: 1}]
最新推荐文章于 2023-11-09 15:29:44 发布