如何遍历深层嵌套对象中的每个object.child?

时间:2020-11-09 10:50:10

标签: javascript lodash

我具有以下结构:

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

您可以看到每个instance的{​​{1}}数组中都有另一个实例,因此,此重复可能会进行得比较深,直到到达最后一个嵌套子级为止。我需要遍历最高/给定children的每个孩子,并执行简单的instance条件。但是由于if的长度可能会有所不同,所以我不知道该怎么做,此外,我们需要检查每个孩子的孩子,依此类推...

1 个答案:

答案 0 :(得分:2)

您可以递归地迭代所有实例:

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