国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js用閉包遍歷樹狀數(shù)組的方法

2024-05-06 16:03:00
字體:
供稿:網(wǎng)友
這篇文章主要介紹了js中用閉包遍歷樹狀數(shù)組的方法,需要的朋友可以參考下

做公司項目時,要求寫一個方法,方法的參數(shù)為一個菜單數(shù)組集合和一個菜單id,菜單數(shù)組的格式為樹狀json,如下面所示:

復制代碼 代碼如下:

[{"id":28,"text":"公司信息","children":[

     {"id":1,"text":"公司文化"},

     {"id":2,"text":"招聘計劃"},

     {"id":6,"text":"公司新聞","children":[

          {"id":47,"text":"行業(yè)新聞"}]},

          {"id":11,"text":"內(nèi)部新聞","children":[

                         {"id":24,"text":"行政信息"},

                         {"id":27,"text":"高層指示"}]},

          {"id":22,"text":"聯(lián)系我們"},

          {"id":26,"text":"產(chǎn)品展示","children":[

                         {"id":32,"text":"電力產(chǎn)品"},

                         {"id":33,"text":"配件介紹"}}]

 }] }]

現(xiàn)在給出的菜單id為32,要求找到對應的項,并返回對應的菜單名稱,方法是先循環(huán)遍歷數(shù)組,當項的id等于指定的id時,將菜單名稱取出,如果不等于則看當前項是否有children,如果children不為空且數(shù)量大于0,則遍歷children,這時就要用到javascript的閉包,將遍歷children的方法放在一個匿名方法中,這樣一直在匿名方法中遞歸自身,當遇到相同名稱的id,就跳出循環(huán),然后從主方法中返回得到的菜單名稱,代碼如下:

復制代碼 代碼如下:

function getMenuName(menus, id) {
  var name = "" ;
  for (var i = 0; i < menus.length; i++) {
    if (menus[i].id == id) {
      name = menus[i].text;
      break;
    }
    else {
       (function () {
        var m = arguments[0];
        var menuid = arguments[1];
        for (var j = 0; j < m.length; j++) {
          if (m[j].id == menuid) {
            name = m[j].text;
            break;
          }
          else if m[j].children != null && m[j].children.length > 0) {
            arguments.callee(m[j].children, val);//遞歸匿名方法
          }
        }
      })(menus[i].children, id);
    }
  }
  return name;
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 满洲里市| 伊吾县| 晴隆县| 科技| 榆树市| 句容市| 凤庆县| 鹤山市| 通州区| 蒲江县| 六枝特区| 南召县| 秭归县| 武穴市| 商都县| 延津县| 通山县| 政和县| 博野县| 河间市| 遂平县| 塔城市| 长治市| 翁源县| 观塘区| 宁晋县| 临海市| 日土县| 宁陕县| 南川市| 叙永县| 阿克苏市| 中卫市| 宜州市| 灌南县| 临漳县| 延津县| 安化县| 麟游县| 青龙| 巴南区|