首页 > 解决方案 > 如何遍历深度嵌套对象中的每个 object.child?

问题描述

我有以下结构:

instance: {
  children: [instance, instance ...]
}

正如您所看到的,每个数组中instance都有children另一个实例,因此这种重复可能会比较深,直到到达最后一个嵌套子节点。我需要遍历最上面/给定的每个孩子instance并执行一个简单的if条件。但我无法弄清楚如何做到这一点,因为长度children可能会有所不同,而且我们需要检查每个孩子的孩子等等......

标签: javascriptlodash

解决方案


您可以递归地遍历所有实例:

function iterate(instance) {
  for (let child of instance.children) {
    iterate(child);
  }
}

例子:

instance = {
  name: 'Parent',
  children: [{
    name: 'Child 1',
    children: []
  }, {
    name: 'Child 2',
    children: [{
      name: 'Grandchild 1',
      children: []
    }]
  }]
};

function iterate(instance, f) {
  if (f)
    f(instance.name);
  for (let child of instance.children) {
    iterate(child, f);
  }
}

iterate(instance, console.log);

输出:

Parent
Child 1
Child 2
Grandchild 1

推荐阅读