首页 > 计算机技术 > 前端开发 > JavaScript

js遍历无限分级的树状结构数组

原创 lihf8515 2025年02月07日 11:09
来源:本站 阅读:554

这个功能在具有无限分级的时候经常用到,我们需要通过遍历树状结构数组,实现输出需要的内容。这里我实现的是返回指定节点的全部子节点值组成的逗号分隔字符串。

/**
 * 遍历树状结构数组,返回指定节点的全部子节点值组成的字符串,
 * 由于最终返回的字符串末尾有一个逗号,所以一般都不直接调用它,而是调用getTreeSubNode来获取
 * @param $array
 * @param $id
 * @return @string
 */
function treeFindSubNode(treeArr, id=0, hasChildren=false){
  var str = "";
  for(var j = 0,len=treeArr.length; j < len; j++) {//遍历所有项
    if (hasChildren){//如果是指定节点的子节点则添加此节点到返回串中
        str += treeArr[j].id + ",";
        if (treeArr[j].hasOwnProperty('children')){//递归下级子节点
          str += treeFindSubNode(treeArr[j].children, id, true);
        }
    }else{
        if (treeArr[j].id == id){//是指定节点则添加此节点到返回串中
          str += treeArr[j].id + ",";
          if (treeArr[j].hasOwnProperty('children')){//递归下级子节点
            str += treeFindSubNode(treeArr[j].children, id, true);
          }
        }else{
            if (treeArr[j].hasOwnProperty('children')){//递归下级子节点
              str += treeFindSubNode(treeArr[j].children, id, false);
            }
        }
    }
  }
  return str;
}

/**
 * 遍历树状结构数组,返回指定节点的全部子节点值组成的字符串,
 * @param $array
 * @param $id
 * @return @string
 */
function getTreeSubNode(treeArr, id=0, hasChildren=false){
  var str = treeFindSubNode(treeArr, id, hasChildren);
  if(str.length != 0){
    str = str.substring(0, str.length -1)
  }
  return str;
}
作者
昵称:君子如兰
注册时间:2025-01-31 02:47:34
最近更新:2026-01-24 17:01:06
文章总数:94篇
原创 88篇   转载 6篇
友情链接: 海峰收银系统  
Copyright © 2025 hfsoft.top All Rights Reserved.
中华人民共和国工业和信息化部ICP备案序号:皖ICP备2025073039号