欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年03月19日 09:39:19   作者:  
這篇文章主要介紹了js中用閉包遍歷樹狀數(shù)組的方法,需要的朋友可以參考下

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

復(fù)制代碼 代碼如下:
[{"id":28,"text":"公司信息","children":[

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

     {"id":2,"text":"招聘計(jì)劃"},

     {"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,要求找到對應(yīng)的項(xiàng),并返回對應(yīng)的菜單名稱,方法是先循環(huán)遍歷數(shù)組,當(dāng)項(xiàng)的id等于指定的id時,將菜單名稱取出,如果不等于則看當(dāng)前項(xiàng)是否有children,如果children不為空且數(shù)量大于0,則遍歷children,這時就要用到j(luò)avascript的閉包,將遍歷children的方法放在一個匿名方法中,這樣一直在匿名方法中遞歸自身,當(dāng)遇到相同名稱的id,就跳出循環(huán),然后從主方法中返回得到的菜單名稱,代碼如下:

復(fù)制代碼 代碼如下:
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;
}

相關(guān)文章

  • 基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果

    基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果

    這篇文章主要為大家詳細(xì)介紹了基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • IE中圖片的onload事件無效問題和解決方法

    IE中圖片的onload事件無效問題和解決方法

    這篇文章主要介紹了IE中圖片的onload事件無效問題和解決方法,這是一個很經(jīng)典的問題,其實(shí)只需要調(diào)換一下代碼順序即可解決,需要的朋友可以參考下
    2014-06-06
  • js實(shí)現(xiàn)旋轉(zhuǎn)的星空效果

    js實(shí)現(xiàn)旋轉(zhuǎn)的星空效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)旋轉(zhuǎn)的星空效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • js修改table中Td的值(定義td的單擊事件)

    js修改table中Td的值(定義td的單擊事件)

    單擊事件,將Td內(nèi)容更新為一個Div,其中裝載了一個Text,用于用戶輸入新的Td的值,一個確定按鈕,一個取消按鈕,用于保存或取消用戶的輸入內(nèi)容
    2013-01-01
  • 詳解webpack4之splitchunksPlugin代碼包分拆

    詳解webpack4之splitchunksPlugin代碼包分拆

    這篇文章主要介紹了詳解webpack4之splitchunksPlugin代碼包分拆,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • JS獲取元素多層嵌套思路詳解

    JS獲取元素多層嵌套思路詳解

    這篇文章主要介紹了JS獲取元素多層嵌套思路詳解的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • echarts動態(tài)渲染柱狀圖背景顏色及頂部數(shù)值方法詳解

    echarts動態(tài)渲染柱狀圖背景顏色及頂部數(shù)值方法詳解

    在使用echarts時,有時需要給柱狀圖設(shè)置背景,下面這篇文章主要給大家介紹了關(guān)于echarts動態(tài)渲染柱狀圖背景顏色及頂部數(shù)值的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • js parentElement和offsetParent之間的區(qū)別

    js parentElement和offsetParent之間的區(qū)別

    這里主要說的是 offsetParent 屬性,這個屬性在 MSDN 的文檔中也沒有解釋清楚,這就讓人更難理解這個屬性。 這幾天在網(wǎng)上找了些資料看看,再加上自己的一些測試,對此屬性有了那么一點(diǎn)的了解,在這里總結(jié)一下。
    2010-03-03
  • javascript相關(guān)事件的幾個概念

    javascript相關(guān)事件的幾個概念

    對于事件來講,首先,我們需要了解這樣幾個概念:事件;事件處理程序;事件類型;事件流;事件冒泡;事件捕獲;事件對象;事件方面的性能優(yōu)化(事件委托、移除事件處理程序);常見的瀏覽器兼容問題。
    2015-05-05
  • 老生常談 js中this的指向

    老生常談 js中this的指向

    下面小編就為大家?guī)硪黄仙U?js中this的指向。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06

最新評論