递归构建树形JSON结构的函数

递归构建树形JSON结构的函数 今天在用KingFusion开发MES系统过程中用到了一个递归构建树形JSON结构的函数下面结合AI的解析一起学习一下。01 函数代码function getJsonTree(data, parentId) { var itemArr []; for (var i 0; i data.length; i) { var node data[i]; if (node.ParientID parentId) { var rowData {}; rowData[id] node.c_Code; rowData[text] node.c_Name; rowData[parentid] node.ParientID; rowData[state] closed; if(node.ParientIDROOT){ rowData[iconCls]icon-root; }else{ rowData[iconCls]icon-circle; } rowData[children] getJsonTree(data,node.c_Code); itemArr.push(rowData); } } return itemArr; };02 函数功能这是一个递归构建树形 JSON 结构的函数用于将扁平的数组数据通常来自数据库或接口转换为层级嵌套的树形结构常用于前端树形组件如 EasyUI 的 Tree、ZTree 等的数据渲染。03 参数说明data扁平的源数据数组每个元素是一个包含节点信息的对象。parentId当前要查找的父节点 ID用于递归定位子节点层级。04 逻辑流程解析①初始化结果数组var itemArr[];用于存放当前层级的所有节点。②遍历源数据for (var i 0; i data.length; i) 逐个检查源数据中的每个节点。③匹配父节点 IDif (node.ParientID parentId) 判断当前节点的父 ID 是否等于传入的parentId。④构建目标节点对象id取源数据的c_Code字段作为节点唯一标识。text取源数据的c_Name字段作为节点显示文本。parentid记录当前节点的父 ID即node.ParientID。state默认设为closed表示节点初始折叠状态常见于 EasyUI Tree。iconCls根据父 ID 是否为ROOT设置不同图标类名根节点用icon-root其他用icon-circle。⑤递归查找子节点rowData[children] getJsonTree(data, node.c_Code); 以当前节点的c_Code作为新的parentId递归调用自身查找子节点赋值给children属性。⑥收集节点itemArr.push(rowData); 将构建好的节点对象加入当前层级结果数组。⑦返回结果循环结束后返回当前层级的节点数组。05 注意事项①递归终止条件当某个parentId在源数据中没有匹配的node.ParientID时递归自然终止。②适用场景要求源数据必须是扁平结构且每个节点包含明确的父ID字段和自身ID字段这里分别是ParientID和c_Code。