博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 根据title从下级往上级查找
阅读量:6343 次
发布时间:2019-06-22

本文共 2178 字,大约阅读时间需要 7 分钟。

 

var menuData = [{     name: 'manage',     title: '测试1',     icon: 'home', }, {     title: '测试2',     name: 'car-parent',     icon: 'android-car',     children: [{         name: 'car',         icon: 'android-car',         title: '测试2-1'     }] }, {     title: '测试3',     name: 'house-parent',     icon: 'social-designernews',     children: [{         icon: 'social-designernews',         name: 'house-second',         title: '测试3-1',         children: [{             icon: 'social-designernews',             name: 'house',             title: '测试3-1-1'         },{             icon:'test',             name:'test',             title:'测试3-1-2'         }]     }]}, {     title: '测试2',     name: 'car-parent',     icon: 'android-car',     children: [{         name: 'car',         icon: 'android-car',         title: '测试2-1'     }] }];function recursion (menuData, name) {    // 最终要返回的数组    var arrTitle = []    // 遍历数组    for (var i = 0; i < menuData.length; i++) {        // 每一次遍历最外层都需要清空        arrTitle = []        // 一个对象        var obj = menuData[i]        // hack        try {            // 一个递归            (function (obj) {                // 如果是数组则遍历                if ( Object.prototype.toString.call(obj) === '[object Array]' ) {                    // 遍历数组                    for (var i = 0; i < obj.length; i++) {                       arguments.callee(obj[i])                    }                // 如果是对象则进行判断                } else if ( Object.prototype.toString.call(obj) === '[object Object]' ) {                    // 如果找到了,直接返回数组吧                    if (obj.name == name) {                         // 我都服了我自己了                         throw new Error('hack')                    // 如果存在 children 属性                    } else if (obj.children) {                        // 二话不说先记录                        arrTitle.push(obj.title);                        // 递归                        arguments.callee(obj.children);                    }                }            })(obj);        } catch (err) {            return arrTitle        }    }    return []}console.log(recursion(menuData, 'house'));console.log(recursion(menuData, 'car'));console.log(recursion(menuData, 'abc'));

 

转载地址:http://tokla.baihongyu.com/

你可能感兴趣的文章
Windows 安装 Jenkins 2.6
查看>>
计算一个点是否在一个区域中
查看>>
正则表达式
查看>>
淘宝面试题:有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先。...
查看>>
EntityFramework 6.x多个上下文迁移实现分布式事务
查看>>
高版本SQL备份在低版本SQL还原问题
查看>>
一键安装最新内核并开启 BBR 脚本
查看>>
C# 绘制图表(柱状图,线性图,饼状图)
查看>>
.NET中使用Redis
查看>>
PHP 页面跳转的三种方式
查看>>
Juniper总结
查看>>
屏蔽scrollview的滚动
查看>>
面试题目3:智能指针
查看>>
取消凭证分解 (取消公司下的多个利润中心)
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>
Nest.js 处理错误
查看>>
MD5的安全性
查看>>
你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
查看>>