javascript - js 多維數(shù)組的問題
問題描述
[ {'id': 1,'name': 'sys','title': '系統(tǒng)設(shè)置','type': 1,'status': 1,'condition': '','pid': 0,'level': 0,'sort': 7,'icon': 'fa-gear','children': [ {'id': 11,'name': 'conf/lst','title': '配置列表','type': 1,'status': 1,'condition': '','pid': 1,'level': 1,'sort': 50,'icon': null,'children': [ {'id': 12,'name': 'conf/add','title': '添加配置','type': 1,'status': 1,'condition': '','pid': 11,'level': 2,'sort': 50,'icon': null,'children': [] }, {'id': 13,'name': 'conf/del','title': '配置刪除','type': 1,'status': 1,'condition': '','pid': 11,'level': 2,'sort': 50,'icon': null,'children': [] }, {'id': 14,'name': 'conf/edit','title': '配置編輯','type': 1,'status': 1,'condition': '','pid': 11,'level': 2,'sort': 50,'icon': null,'children': [] }] }, {'id': 9,'name': 'conf/conf','title': '配置項','type': 1,'status': 1,'condition': '','pid': 1,'level': 1,'sort': 50,'icon': null,'children': [] }] }, {'id': 15,'name': 'admin','title': '管理員','type': 1,'status': 1,'condition': '','pid': 0,'level': 0,'sort': 50,'icon': 'fa-user','children': [ {'id': 16,'name': 'admin/lst','title': '管理員列表','type': 1,'status': 1,'condition': '','pid': 15,'level': 1,'sort': 50,'icon': null, }, {'id': 27,'name': 'authrule/lst','title': '權(quán)限列表','type': 1,'status': 1,'condition': '','pid': 15,'level': 1,'sort': 50,'icon': null, }, {'id': 30,'name': 'authgroup/lst','title': '用戶組','type': 1,'status': 1,'condition': '','pid': 15,'level': 1,'sort': 50,'icon': null, }] }]
上面的json是多維數(shù)組,我想用js for循環(huán)把children下面的數(shù)組輸出,但不知道為什么輸出不了,也沒報錯.
$.ajax({ type: 'get', url: '/admin/index/menu', async: true, dataType: ’json’, success: function(res) {for(var i = 0; i < res.length; i++) { console.log(res[i].children); //這個能輸出 for (var a=0;a<res[i].children;a++) {console.log(res[i].children[a]); //這個不能輸出,也沒有報錯 }} }})
請問是哪里錯了?
問題解答
回答1:$.ajax({ type: 'get', url: '/admin/index/menu', async: true, dataType: ’json’, success: function(res) {for(var i = 0; i < res.length; i++) { console.log(res[i].children); for (var a = 0; a < res[i].children.length; a++) { // <-- 此處少了.length,數(shù)字和對象比較大小,結(jié)果為false,第二個條件一次也滿足不了console.log(res[i].children[a]); }} }}回答2:
a<res[i].children -> a<res[i].children.length
回答3:雖然來晚了,但是我覺得還是可以補充一下
一般我個人比較喜歡使用 foreach 遍歷,在 JS 里是(以此例中的代碼為例)
res.forEach(r => { r.children.forEach(c => {// do something });});
上面用了es6的箭頭函數(shù),如果要在 es5 中寫,直接換成 function 表達(dá)式就好
回答4:這里應(yīng)該是要做個遞歸,推薦了解下遞歸知識遞歸遍歷節(jié)點
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(通過程序添加)2. python - 管道符和ssh傳文件3. 老師 我是一個沒有學(xué)過php語言的準(zhǔn)畢業(yè)生 我希望您能幫我一下4. python - Pycharm一句代碼寫完可以自動補全空格么?5. 這段代碼既不提示錯誤也看不到結(jié)果,請老師明示錯在哪里,謝謝!6. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)7. tp5 不同控制器中的變量調(diào)用問題8. 微信開放平臺 - android 微信支付后點完成按鈕,后回調(diào)打開第三方頁面,屏幕閃動,求解決方法9. mysql服務(wù)無法啟動1067錯誤,誰知道正確的解決方法?10. php7.3.4中怎么開啟pdo驅(qū)動
