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