2016-08-12 7 views
0

私は誰かが正しい方向に私を向けることを望んでいます。Javascript - オブジェクトを介したトラバースとプロパティの更新

私は、次のようなJavaScriptオブジェクトを持っている...

var category = [{ 
    isExpanded: false, 
    name: "Electricals", 
    subcategories: [{ 
     isExpanded: false, 
     name: "Audio", 
     subcategories: null 
    }, { 
     isExpanded: false, 
     name: "Photography", 
     subcategories: null 
    }] 
}, { 
    isExpanded: false, 
    name: "Telecoms", 
    subcategories: [{ 
     isExpanded: false, 
     name: "Mobile", 
     subcategories: null 
    }, { 
     isExpanded: false, 
     name: "Sim-cards", 
     subcategories: null 
    }] 
}, { 
    isExpanded: false, 
    name: "Entertainment", 
    subcategories: [{ 
     isExpanded: false, 
     name: "Gaming", 
     subcategories: [{ 
      isExpanded: false, 
      name: "Games", 
      subcategories: null 
     }] 
    }, { 
     isExpanded: false, 
     name: "Sports", 
     subcategories: null 
    }] 
}]; 

私の目標は、各カテゴリ/サブカテゴリを反復処理し、私のロジックに応じて、「isExpandable」の値を設定することです。サブカテゴリやサブカテゴリなどを念頭に置いて、オブジェクトの各サブカテゴリをどのように反復することができるかをアドバイスできますか?

ここに私の現在の試行がある...

function blah() { 
    for (var i = 0; i < category.length; i++) { 
    if (category[i].subcategories) { 
     console.log(category[i]); 
     traverseCategoryTree(category[i]); 
    } 
    } 
} 

function traverseCategoryTree(category) { 
    //iterate each subcategory and update is Expanded. 
} 

blah(); 
+0

は、再帰関数を使用します –

答えて

3
function traverseCategoryTree(categories) { 
    for (var i = 0, len = categories.length; i < len; i++) { 
    console.log(categories[i]); 
    if (categories[i].subcategories) { 
     traverseCategoryTree(categories[i].subcategories); 
    } 
    } 
}  

traverseCategoryTree(category); 
関連する問題