//将后端返回的list数据转化为树结构 export const listToTree = (list) => { var arr = [] let items = {} var idsStr = '' // 获取每个节点的直属子节点(是直属,不是所有子节点) for (let i = 0; i < list.length; i++) { let key = list[i].parentId if (items[key]) { items[key].push(list[i]) } else { items[key] = [] items[key].push(list[i]) } idsStr += idsStr === '' ? list[i].id : ',' + list[i].id } for (var key in items) { if (idsStr.indexOf(key) === -1) {//找到最大的父节点key arr=formatTree(items, key) } } delete arr[0].parentId return arr } function formatTree(items, parentId) { let result = [] if (!items[parentId]) { return result } for (let t of items[parentId]) { t.children = formatTree(items, t.id)//递归获取children result.push(t) } return result }