2016-08-12 136 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);