如何解析嵌套JSON树并遍历所有节点提取checked属性实现对应业务逻辑
实现方案
因为你的数据是多层嵌套的树形结构,用递归遍历的方式最方便,能覆盖所有层级的节点,不需要提前知道嵌套深度。
方法1:递归遍历实现
// 定义递归遍历函数 function traverseNode(node) { // 先处理当前节点:判断checked是否为true if (node.checked) { // 这里替换为你要执行的业务逻辑即可 console.log(`节点ID:${node.id},节点名称:${node.name} 已选中`); } // 遍历当前节点的所有子节点,递归调用遍历函数 if (node.children && node.children.length > 0) { node.children.forEach(childNode => { traverseNode(childNode); }); } } // 调用入口:传入你拿到的根节点数据 var data = this.flatData; traverseNode(data);
方法2:非递归广度优先遍历(适合嵌套极深的场景,避免栈溢出)
var data = this.flatData; // 用队列存储待遍历的节点 let nodeQueue = [data]; while (nodeQueue.length > 0) { // 取出队首节点 let currentNode = nodeQueue.shift(); // 处理当前节点 if (currentNode.checked) { // 这里替换为你要执行的业务逻辑即可 console.log(`节点ID:${currentNode.id},节点名称:${currentNode.name} 已选中`); } // 把当前节点的子节点加入队列末尾,待后续遍历 if (currentNode.children && currentNode.children.length > 0) { nodeQueue.push(...currentNode.children); } }
两种方法都可以覆盖所有层级的节点,普通场景下优先选择代码更简洁的递归方案即可。
内容的提问来源于stack exchange,提问作者Islem Talbi
相关产品推荐
相关产品推荐

