json树形结构数据的常用方法

json树形结构数据的常用方法

2023年6月22日发(作者:)

json树形结构数据的常⽤⽅法1,初始化树形结构数据/* *

树形数据递归,最后⼀级节点children初始化设为null * * data

树数据(数组) * */export function InitializationTree(data = []) { if (!data || !y(data)) { return; } //

循环遍历json数据 for (let i = 0; i < ; i++) { if (data[i]. < 1) { // children若为空数组,则将children设为undefined data[i].children = null; } else { // children若不为空数组,则继续

递归调⽤

本⽅法 InitializationTree(data[i].children); } } return data;}2,根据id找到当前节点对象/* *

树形数据递归,根据id找到当前节点对象 * * data

树数据(数组) * targetId

查找的id * *

返回

节点id的对象 */export function TraverseTree(data = [], targetId) { if (!data || !y(data)) { return; } for (let i = 0; i < ; i++) { if (data[i].id === targetId) { return data[i] } else if (data[i].children && data[i]. > 0) { let traverseTreeData = TraverseTree(data[i].children, targetId); if (traverseTreeData) return traverseTreeData } }}3,根据⼦节点id找到⽗节点集合/* *

树形数据递归,根据⼦节点id找到⽗节点集合 * * treeData

树数据(数组) * targetId

⼦节点id * *

返回

节点⽗级id的集合数组(包含当前⼦节点) */export function GetTreeNodesParents(treeData = [], targetId) { let result = []; let callback = (data = [], targetId) => { if (!data || !y(data)) { return; } for (const i in data) { if (data[i].id === targetId) { t(data[i].id); callback(treeData, data[i].parentId); } if (data[i].children && y(data[i].children)) { callback(data[i].children, targetId); } } }; callback(treeData, targetId); return result}4,过滤不需要的节点,返回新的tree/** treeData: Array

树数据* filterKeys: Array

需要过滤掉的节点id数组

如:[1,2,3]*/export function GetFilterTreeNodes(treeData = [], filterKeys = []) { let result = []; let callback = (data, nodes) => { if (!data || !y(data) || !y(nodes)) { return; } for (let i = 0; i < ; i++) { if (es(data[i].id)) continue; const treeNode = {...data[i], children: []}; (treeNode); if (data[i].children && y(data[i].children)) { callback(data[i].children, en); } } }; callback(treeData, result); return result;}

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687381842a5845.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信