js数组转tree
数组转 tree 实现方式,js版本实现了三种
let arr = [{name: "李四", id: 2, pid: 0},// []
{name: "王五", id: 3, pid: 0}, // []
{name: "赵六", id: 4, pid: 3}, // []
{name: "吗六", id: 9, pid: 3}, // []
{name: "张三", id: 7, pid: 9}, // []
{name: "张五", id: 10, pid: 4}, // []
]
递归模式
/** * 递归模式,数组转tree * @param arr 目标数组 * @param pid 第一级 目标id * @returns {*[]} tree * [ * { name: '李四', id: 2, pid: 0, children: [] }, * { name: '王五', id: 3, pid: 0, children: [ [Object], [Object] ] } * ] * @constructor */ function ArrayToTree(arr, pid = 0) { // 判断是否是数组 不是数组就返回 [] if (!Array.isArray(arr) || !arr.length) return []; let newArr = [] arr.forEach(item => { // 判断 当前item.pid 和 传入的pid 是否相等,相等就push 进去 if (item.pid == pid) { newArr.push({ ...item, children: ArrayToTree(arr, item.id) }) } }) return newArr }