JS根据子节点递归获取所有父节点的集合

JS根据子节点递归获取所有父节点的集合,第1张

//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id

        function findIdList(data2, id, children = 'children', level = 0) {

  var arrRes = [];

  let obj = {

      id: 0,

      [children]: data2

  }

  let rev = (data, id, level) => {

    if (!data || !data[children] || !data[children]length) {

      return;

    }

    for (var i = 0; i < data[children]length; i++) {

      let item = data[children][i];

      if (itemid == id) {

        // 将匹配到的结果保存到数组

        arrResunshift({ level, activeId: itemid });

        // 递归它的父级

        rev(obj, dataid, 0);

        break;

      } else if (item[children] && item[children]length > 0) {

        //如果有子集,则把子集作为参数重新执行本方法

        rev(item, id, level + 1);

      }

    }

  };

  rev(obj, id, level);

  return arrRes;

}

let list = [

    {id: 1, children: [

        {id: 11, children: [{id: 12}]}

    ]},

    {id: 2, children: [{id:21, children: [{id: 31}]}]}

]

let b = findIdList(list, 21)

consolelog(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]

<body>

  <script>var a = Mathrandom()</script>

  <div>

    <script>

      //这里的要点是需要获取到当前的script标签

      //或者是这个script标签的父亲(div)

      

      //1 直接获取到div

      var all_div = documentgetElementsByTagName('div');

      var div = all_div[all_divlength - 1];

      divid = a;

      //这个是利用了html代码加载执行时的顺序从上到下

      //而在这个script里代码执行的时候恰好解析到

      //最后一个div就是我们想要的div 所以直接查找所有的div

      //然后取最后一个div就是这个标签的父亲(div)

      

      

      //2 获取当前执行的script标签,然后取它的父亲

      function getCurrentScript(){

        if(documentcurrentScript){

          return documentcurrentScript;

        }

        var scripts = documentgetElementsByTagName('script');

        return scripts[scriptslength - 1];

      }

      

      var script = getCurrentScript();

      var div = scriptparentNode;

      divid = a;

      

      //这个是查找当前正在执行的脚本的标签

      //新版浏览器会有支撑的属性 currentScript

      //旧版本的话,就只好查找所有脚本,然后返回最后一个

      

    </script>

  </div>

</body>

$('z')parent();

是这个意思不?

结果是

<div id='F'>

<p id='Z'></p>

</div>

以上就是关于JS根据子节点递归获取所有父节点的集合全部的内容,包括:JS根据子节点递归获取所有父节点的集合、javascript获取父节点问题、jquery 如何 根据子节点 获取它的父节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9631004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存