js 递归获取子节点所有父节点,深度遍历获取第一个子树

摘要:
递归深度优先遍历算法//查找一个节点的所有父节点familyTree{vartemp=[]varforFn=function{for{varitem=arr[i]if{temp.pushforFnbreak}else{if{forFn}}}}forFnreturntemp},//查找一个树多有第一个节点,深度遍历getFirstNode{vartemp=[]varforFn=function{if{temp.pushif{forFn}}}forFnreturntemp}

前端需求。

  • 递归
  • 深度优先遍历算法
// 查找一个节点的所有父节点
 familyTree (arr1, id) {
      var temp = []
      var forFn = function (arr, id) {
        for (var i = 0; i < arr.length; i++) {
          var item = arr[i]
          if (item.id === id) {
            temp.push(item)
            forFn(arr1, item.pid)
            break
          } else {
            if (item.children) {
              forFn(item.children, id)
            }
          }
        }
      }
      forFn(arr1, id)
      return temp
    },
    // 查找一个树多有第一个节点,深度遍历
    getFirstNode (tree) {
      var temp = []
      var forFn = function (arr) {
        if (arr && arr.length > 0) {
          temp.push(arr[0])
          if (arr[0].children) {
            forFn(arr[0].children)
          }
        }
      }
      forFn(tree)
      return temp
    }

在这里插入图片描述

免责声明:文章转载自《js 递归获取子节点所有父节点,深度遍历获取第一个子树》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Zabbix组件、术语及进程介绍Nginx基础配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

My97DatePicker控件调用

引用My97DatePicker,在要使用的jsp页面中引入js,如下 <script type="text/javascript" src="<%=request.getContextPath() %>/dd/js/My97DatePicker/WdatePicker.js"></script> 调用My97DateP...

js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。

1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=date2.getTime()-date1.getTime() //时间差的毫秒数 //计算出相差天数 var days=Math.floor(...

jquery滚动条加载数据

//滚动条 $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(document).height(); var windowHeight = $(this).height(); var data = $("#n").text();...

JS刷新页面的几种方法

1 history.go(0)2 location.reload() 3 location=location 4 location.assign(location) 5 document.execCommand(‘Refresh‘) 6 window.navigate(location) 7 location.replace(location) 8 doc...

(转)Arcgis for Js之鼠标经过显示对象名的实现

http://blog.csdn.net/gisshixisheng/article/details/41889345 在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来说是很实用的,本文讲述在Arcgis for Js中,用两种不同的方式来实现该效果。 为了有个直观的概念,先给大家看看实现后的效果: 百度地图的效果 效果...

JS来推断文本框内容改变事件

oninput,onpropertychange,onchange的使用方法 onchange触发事件必须满足两个条件: a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效) b)当前对象失去焦点(onblur); onpropertychange的话,仅仅要当前对象属性发生改变,都会触发事件,可是它是IE专属的; oninput是onpr...