树状结构与数组转换
使用场景
后端传递嵌套数据
菜单权限等
树结构转数组
/**
* 树结构转数组
* @param {Object} arr 树结构
*/
export const treeToList = (arr) => {
let tree = JSON.parse(JSON.stringify(arr));
let queen = [];
let out = [];
queen = queen.concat(tree);
while (queen.length) {
let first = queen.shift();
if (first.children) {
queen = queen.concat(first.children);
delete first['children'];
}
out.push(first);
}
return out;
};
数组转树结构
/**
* 数组转树结构
* @param {Object} jsonData 数组
*/
export const listToTree = (jsonData) => {
const cloneData = JSON.parse(JSON.stringify(jsonData)); // 对源数据深度克隆
return cloneData.filter((father) => {
const branchArr = cloneData.filter(
(child) => father.id === child.parentId,
); // 返回每一项的子级数组
if (branchArr.length > 0) {
father.children = branchArr; // 如果存在子级,则给父级添加一个children属性,并赋值
}
return !father.parentId; // 返回第一层
});
};
本文来自博客园,作者:流云君,转载请注明原文链接:https://www.cnblogs.com/yun10011/p/16520480.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)