js用閉包遍歷樹狀數(shù)組的方法
做公司項(xiàng)目時,要求寫一個方法,方法的參數(shù)為一個菜單數(shù)組集合和一個菜單id,菜單數(shù)組的格式為樹狀json,如下面所示:
{"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),然后從主方法中返回得到的菜單名稱,代碼如下:
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;
}
- JavaScript實(shí)現(xiàn)樹的遍歷算法示例【廣度優(yōu)先與深度優(yōu)先】
- JS中的二叉樹遍歷詳解
- javascript先序遍歷DOM樹的方法
- JavaScript實(shí)現(xiàn)二叉樹的先序、中序及后序遍歷方法詳解
- JS實(shí)現(xiàn)二叉查找樹的建立以及一些遍歷方法實(shí)現(xiàn)
- javascript實(shí)現(xiàn)二叉樹遍歷的代碼
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的遍歷算法示例
- JS遍歷DOM文檔樹的方法實(shí)例詳解
- JavaScript實(shí)現(xiàn)多叉樹的遞歸遍歷和非遞歸遍歷算法操作示例
- JavaScript實(shí)現(xiàn)的DOM樹遍歷方法詳解【二叉DOM樹、多叉DOM樹】
- JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法示例
相關(guān)文章
基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果
這篇文章主要為大家詳細(xì)介紹了基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07詳解webpack4之splitchunksPlugin代碼包分拆
這篇文章主要介紹了詳解webpack4之splitchunksPlugin代碼包分拆,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12echarts動態(tài)渲染柱狀圖背景顏色及頂部數(shù)值方法詳解
在使用echarts時,有時需要給柱狀圖設(shè)置背景,下面這篇文章主要給大家介紹了關(guān)于echarts動態(tài)渲染柱狀圖背景顏色及頂部數(shù)值的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11js parentElement和offsetParent之間的區(qū)別
這里主要說的是 offsetParent 屬性,這個屬性在 MSDN 的文檔中也沒有解釋清楚,這就讓人更難理解這個屬性。 這幾天在網(wǎng)上找了些資料看看,再加上自己的一些測試,對此屬性有了那么一點(diǎn)的了解,在這里總結(jié)一下。2010-03-03