js用闭包遍历树状数组的方法
2023-06-13 09:15:20 时间
做公司项目时,要求写一个方法,方法的参数为一个菜单数组集合和一个菜单id,菜单数组的格式为树状json,如下面所示:
{"id":1,"text":"公司文化"},
{"id":2,"text":"招聘计划"},
{"id":6,"text":"公司新闻","children":[
{"id":47,"text":"行业新闻"}]},
{"id":11,"text":"内部新闻","children":[
{"id":24,"text":"行政信息"},
{"id":27,"text":"高层指示"}]},
{"id":22,"text":"联系我们"},
{"id":26,"text":"产品展示","children":[
{"id":32,"text":"电力产品"},
{"id":33,"text":"配件介绍"}}]
}]}]
现在给出的菜单id为32,要求找到对应的项,并返回对应的菜单名称,方法是先循环遍历数组,当项的id等于指定的id时,将菜单名称取出,如果不等于则看当前项是否有children,如果children不为空且数量大于0,则遍历children,这时就要用到javascript的闭包,将遍历children的方法放在一个匿名方法中,这样一直在匿名方法中递归自身,当遇到相同名称的id,就跳出循环,然后从主方法中返回得到的菜单名称,代码如下:
varname="";
for(vari=0;i<menus.length;i++){
if(menus[i].id==id){
name=menus[i].text;
break;
}
else{
(function(){
varm=arguments[0];
varmenuid=arguments[1];
for(varj=0;j<m.length;j++){
if(m[j].id==menuid){
name=m[j].text;
break;
}
elseifm[j].children!=null&&m[j].children.length>0){
arguments.callee(m[j].children,val);//递归匿名方法
}
}
})(menus[i].children,id);
}
}
returnname;
}
相关文章
- js 实现二叉树中序遍历
- js 实现层序遍历
- js数组遍历的方法_图的遍历及应用实验总结
- js数组截取方式splice()和slice()方法
- JS数组遍历的几种方法
- php 中js跳转页面跳转页面,js跳转代码_PHP页面跳转 Js页面跳转代码[通俗易懂]
- 【说站】js中__proto__和prototype的关系
- 【尚硅谷】JavaScript基础&实战丨JS入门到精通_01-06
- JS对象转数组_js怎么把数组转成对象
- Vue.js – 引入外部 JS 文件
- arraylist遍历 并删除_js遍历list对象
- JS设置定时器_js设置定时器
- js 遍历数组、对象的几种方式
- 原生 JS 实现 HTML 转 Markdown ,html2md.js
- 如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码
- JS循环练习-简易银行ATM
- JS for in遍历对象属性
- Linux上的JS压缩工具(js压缩工具linux)
- 快速掌握JS操作MySQL数据库技巧(js操作mysql数据库)
- 用SQL Server和JS实现数据库管理技术(sqlserver.js)
- js+FSO遍历文件夹下文件并显示
- js几个验证函数代码
- js对象之JS入门之Array对象操作小结
- JQuery的$和其它JS发生冲突的快速解决方法
- js获取当前地址JS获取当前URL的示例代码
- node.js中使用socket.io制作命名空间