Javascript - 遍历对象并更新属性

标签 javascript recursion iteration tree-traversal

我希望有人能指出我正确的方向。

我有一个如下所示的 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();

最佳答案

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);

关于Javascript - 遍历对象并更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923327/

相关文章:

javascript - 授权 header 不适用于 http GET 请求

javascript - 如何使用 jquery 对数据表进行数字排序

C - 递归搜索函数找到键然后返回NULL

javascript - 在迭代期间向 JSON 对象添加属性?

Python查询: iterating through log file

javascript - 从 vuex 存储访问 $vuetify 实例属性

javascript - 选择菜单的替代方法

java - 递归方法中 int[] 的 ArrayList

javascript - 递归防止函数被连续点击多次

python - 如何在迭代时从列表中删除项目?