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

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

原创 lihf8515于2025年02月07日 11:09发表
来源:本站 阅读:114

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


/**
* 遍历树状结构数组,返回指定节点的全部子节点值组成的字符串,
* 由于最终返回的字符串末尾有一个逗号,所以一般都不直接调用它,而是调用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;
}
友情链接: 小财迷收银系统  
Copyright © 2025 HF备忘录. All Rights Reserved.
中华人民共和国工业和信息化部ICP备案序号:皖ICP备2025073039号