js 数组转树方法
2019-04-26 本文已影响0人
傑仔
##方法1
function array2Tree(array) {
const result = []
if (!Array.isArray(array)) {
return result
}
array.forEach(item => {
delete item.children
})
const map = {}
array.forEach(item => {
map[item.id] = item
})
array.forEach(item => {
const parent = map[item.parentId]
if (parent) {
(parent.children || (parent.children = [])).push(item)
} else {
result.push(item)
}
})
return result
}
##方法2
/**
*通过递归实现
* data 数组数据
* pid 顶级元素的parentId值
*/
function array2Tree (data, pid) {
let result = []
let temp
for (let i = 0; i < data.length; i++) {
if (data[i].parentId === pid) {
let obj = {id: data[i].id, name: data[i].name}
temp = array2Tree(data, data[i].id)
if (temp.length > 0) {
obj.children = temp
}
result.push(obj)
}
}
return result
}
const array = [
{id:1, parentId: null, name: 'a'},
{id:2, parentId: null, name: 'b'},
{id:3, parentId: 1, name: 'c'},
{id:4, parentId: 2, name: 'd'},
{id:5, parentId: 1, name: 'e'},
{id:6, parentId: 3, name: 'f'},
]
arrayToTree(array)