js利用遞歸遍歷數組


1、題目要求:如下數組輸入相應的id號,就可以返回數據對象

var data = [{
        id: 1,
        name: '家電',
        goods: [{
            id: 11,
            gname: '冰箱'
        }, {
            id: 12,
            gname: '服飾'
        }]
    }, {
        id: 2,
        name: '服飾'
    }];

 代碼實現

  function getID(json, id) {
        var o = {}; //專門用來保存篩選后的數組
//定義一個函數getID(json,id),形參json用來接受傳入的數組,形參id用來接受id號
//核心:利用arry.forEach(function(currentValue),index,arr)遍歷數組 json.forEach(function(item) {
//if用來判斷外層,else if用來判斷里層,調用遞歸函數的有2個判斷條件在“有goods屬性並且不為空”情況下才調用
if (item.id = id) { o = item; } else if (item.goods && item.goods.length > 0) { o = getID(item.goods, id)//遞歸 } }); return o; //全部遍歷完之后返回對象o } console.log(getID(data, 1)); console.log(getID(data, 2)); console.log(getID(data, 11)); console.log(getID(data, 12)); </script>

結果:

注意:上述如果不使用遞歸,只能遍歷到數組的最外層如下:

 data.forEach(function(item) {
        console.log(item);
    })

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM