// 列表转树结构 list_to_tree() { let a = [ { id: 3, name: '测试3', up_id: 2, }, { id: 2, name: '测试2', up_id: 1, }, { id: 1, name: '测试1', up_id: null, }, ] let toTree = data => { let result = [] if (!Array.isArray(data)) { return result } let map = new Map() data.forEach(item => { delete item.children map.set(item.id, item) }) data.forEach(item => { let parent = map.get(item.up_id) if (parent) { ;(parent.children || (parent.children = [])).push(item) } else { result.push(item) } }) return result } console.log(toTree(a)) },
结果如下:
// 递归删除某些节点(暂未测试过) filterTree(data) { for (let i = 0; i < data.length; i++) { if (data[i].id == 2) { delete data[i].children } else { if (data[i].children.length != 0) { return this.filterTree(data[i].children) } return } } },
参考链接:https://www.cnblogs.com/mengfangui/p/10494601.html