首页
> 计算机技术
> 前端开发
> 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;
}
上一篇:js格式化日期的方法
下一篇:js获取指定天数后的日期时间
阅读排行榜