标签:树结构 数据 children 生成 childrenListMap let parentId config id
1 /** 2 * 构造树型结构数据 3 * @param {*} data 数据源 4 * @param {*} id id字段 默认 'id' 5 * @param {*} parentId 父节点字段 默认 'parentId' 6 * @param {*} children 孩子节点字段 默认 'children' 7 */ 8 export function handleTree(data, id, parentId, children) { 9 let config = { 10 id: id || 'id', 11 parentId: parentId || 'parentId', 12 childrenList: children || 'children' 13 }; 14 15 var childrenListMap = {}; 16 var nodeIds = {}; 17 var tree = []; 18 19 for (let d of data) { 20 let parentId = d[config.parentId]; 21 if (childrenListMap[parentId] == null) { 22 childrenListMap[parentId] = []; 23 } 24 nodeIds[d[config.id]] = d; 25 childrenListMap[parentId].push(d); 26 } 27 28 for (let d of data) { 29 let parentId = d[config.parentId]; 30 if (nodeIds[parentId] == null) { 31 tree.push(d); 32 } 33 } 34 35 for (let t of tree) { 36 adaptToChildrenList(t); 37 } 38 39 function adaptToChildrenList(o) { 40 if (childrenListMap[o[config.id]] !== null) { 41 o[config.childrenList] = childrenListMap[o[config.id]]; 42 } 43 if (o[config.childrenList]) { 44 for (let c of o[config.childrenList]) { 45 adaptToChildrenList(c); 46 } 47 } 48 } 49 return tree; 50 }
标签:树结构,数据,children,生成,childrenListMap,let,parentId,config,id 来源: https://www.cnblogs.com/bkings/p/15769804.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。