将一维数组的树形结构的数据,转化为 供 例如(treeselect 组件)使用的数据
/** * 构造树型结构数据 * @param {*} data 数据源 * @param {*} id id字段 默认 'id' * @param {*} parentId 父节点字段 默认 'parentId' * @param {*} children 孩子节点字段 默认 'children' * @param {*} rootId 根Id 默认 0 */ export function handleTree(data, id, parentId, children, rootId) { id = id || "id"; parentId = parentId || "parentId"; children = children || "children"; rootId = rootId || Math.min.apply( Math, data.map((item) => { return item[parentId]; }) ) || 0; //对源数据深度克隆 const cloneData = JSON.parse(JSON.stringify(data)); //循环所有项 const treeData = cloneData.filter((father) => { let branchArr = cloneData.filter((child) => { //返回每一项的子级数组 return father[id] === child[parentId]; }); branchArr.length > 0 ? (father.children = branchArr) : ""; //返回第一层 return father[parentId] === rootId; }); return treeData != "" ? treeData : data; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了