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条)