一转多
let arr = [
{
id: "4",
name: "wxj",
pid: "2"
},
{
id: "5",
name: "wxj",
pid: "2"
},
{
id: "6",
name: "wxj",
pid: "5"
},
{
id: "7",
name: "wxj",
pid: "3"
},
{
id: "8",
name: "wxj",
pid: "3"
},
{
id: "9",
name: "wxj",
pid: "8"
},
{
id: "2",
name: "wxj",
pid: "1"
},
{
id: "3",
name: "wxj",
pid: "1"
}, {
id: "10",
name: "wxj10",
pid: "8"
}
]
function arrToTree(data) {
let result = []
let map = {}
data.forEach(item => {
map[item.id] = item
})
data.forEach(item => {
let parent = map[item.pid]
if (!parent) {
result.push(map[item.id])
return
}
(parent.children || (parent.children = [])).push(item)
})
return result
}
console.log(arrToTree(arr));
多转一
let arr = [{
id: "1",
name: "wxj",
children: [{
id: "2",
name: "wxj",
children: [{
id: "4",
name: "wxj",
},
{
id: "5",
name: "wxj",
},
{
id: "6",
name: "wxj",
},
]
},
{
id: "3",
name: "wxj",
},
]
}, {
id: "7",
name: "wxj",
children: [{
id: "8",
name: "wxj",
}]
}]
function deepArr(data) {
if (!Array.isArray(data)) {
return data
}
let newarr = []
data.forEach(item => {
if (!item.children) {
return newarr.push(item)
}
let obj1 = JSON.parse(JSON.stringify(item))
delete obj1.children
newarr.push(obj1)
newarr.push(...deepArr(item.children))
})
return newarr
}
console.log(deepArr(arr));