前言:
如今各位老铁们对“数组转化成树形结构”可能比较关切,姐妹们都想要知道一些“数组转化成树形结构”的相关内容。那么小编同时在网摘上汇集了一些关于“数组转化成树形结构””的相关文章,希望朋友们能喜欢,我们快快来学习一下吧!用于将一维数组转换为树状结构,通常用于栏目菜单功能
/** * 树状路由转换 * @param nodes 一维数组 * @param parentKey 匹配的字段 * @param childrenName 子集名称 * @param rootKeys 父类的值 * @returns 树状 */export function setTree(nodes: any[], parentKey = 'parent_id', childrenName:'children', rootKeys: any = [0, 'root']) { const rootNode: any[] = []; const _child: any[] = []; nodes.forEach((item) => { const parentId = item[parentKey]; if (parentId == null || rootKeys.includes(parentId)) { rootNode.push(item); } else { _child.push(item); } }); rootNode.forEach((item) => { item[childrenName] = getChild(item.id, _child, parentKey, childrenName); }); return rootNode;}/** * 从数组中找到其父级 * @param id 父组件ID * @param allNode 所有列表 * @param parentKey 当前组件的父级ID * @returns 返回一个tree */export function getChild(id: number, allNode: any[], parentKey: string, childrenName: string): any[] { // 未获取到的 const _child: any[] = []; //存放子菜单的集合 const listChild: any[] = []; allNode.forEach((item) => { if (item[parentKey] === id) { listChild.push(item); } else { _child.push(item); } }); if (listChild.length) { listChild.forEach((child) => { child[childrenName] = getChild(child.id, _child, parentKey, childrenName); }); } return listChild;}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #数组转化成树形结构