javascript - 如何使用 JavaScript 在树中查找节点

标签 javascript

我有一个对象文字,它本质上是一棵没有固定数量级别的树。如何在树中搜索特定节点,然后在 javascript 中以高效方式找到该节点时返回该节点?

基本上我有一棵这样的树,我想找到标题为“randomNode_1”的节点

var data = [
{
title: 'topNode',
 children: [
   {
       title: 'node1',
       children: [
       {
           title: 'randomNode_1'
       },
       {   
           title: 'node2',
           children: [
           {
               title: 'randomNode_2',
               children:[
               {   
                   title: 'node2',
                   children: [
                   {
                       title: 'randomNode_3',
                   }]
               }
               ]
           }]
       }]
   }
  ]
 }];

最佳答案

此答案基于@Ravindra 的答案,但具有真正的递归。

function searchTree(element, matchingTitle){
     if(element.title == matchingTitle){
          return element;
     }else if (element.children != null){
          var i;
          var result = null;
          for(i=0; result == null && i < element.children.length; i++){
               result = searchTree(element.children[i], matchingTitle);
          }
          return result;
     }
     return null;
}

然后你可以调用它:

var element = data[0];
var result = searchTree(element, 'randomNode_1');

关于javascript - 如何使用 JavaScript 在树中查找节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133500/

相关文章:

javascript - jQuery 用户界面。设置选项后加一

javascript - jquery 在 <div> 图形区域内设置鼠标位置

javascript - 使用 JavaScript 读取/写入/更改本地文本文件(在 DropBox 上)的内容

javascript - anchor 跳跃而不是平滑滚动

javascript - 如何阻止长时间的 javascript 循环导致浏览器崩溃?

javascript - 动态加载 HTML 的 Onclick 监听器

javascript - 将 PHP 中的正则表达式转换为 javascript

javascript - 处理回调函数

javascript - Jquery 表单与选择器中的自适应表

javascript - 无法将 JSON 数据发送到 MVC Controller