1 var source = [{ 2 id: 1, pid: 0, name: 'body'}, { 3 id: 2, pid: 1, name: 'title'}, { 4 id: 3, pid: 1, name: 'div'}, { 5 id: 4, pid: 3, name: 'span'}, { 6 id: 5, pid: 3, name: 'icon'}, { 7 id: 6, pid: 4, name: 'subspan'}] 8 function toTree(data) { 9 let result = [] 10 if (!Array.isArray(data)) { 11 return result 12 } 13 data.forEach(item => { 14 delete item.children; 15 }); 16 let map = {}; 17 data.forEach(item => { 18 map[item.id] = item; 19 }); 20 data.forEach(item => { 21 let parent = map[item.pid]; 22 if (parent) { 23 (parent.children || (parent.children = [])).push(item); 24 } else { 25 result.push(item); 26 } 27 }); 28 return val; 29 } 30 console.log(toTree(source))
哈希表实现id,pid转树形结构
猜你喜欢
转载自www.cnblogs.com/codejoker/p/10475801.html
今日推荐
周排行