我有一个挑战循环遍历具有嵌套子属性的数组对象,结构就像这样
我尝试的遍历甚至不接近,我实际上希望结果是一个平坦的数组
[{
element: 'a',
key: 'a',
isCollapsible: true,
isClickable: false,
children: [{
element: 'a-1',
key: 'a-1',
indentChildren: false,
children: [{
element: 'a-1-1',
key: 'a-1-1',
children: [],
}, {
element: 'a-1-2',
key: 'a-1-2',
children: [],
}],
}, {
element: 'a-2',
key: 'a-2',
indentChildren: false,
children: [{
element: 'a-2-1',
key: 'a-2-1',
indentChildren: false,
children: [{
element: 'a-2-1-1',
key: 'a-2-1-1',
children: [],
}],
}, {
element: 'a-2-2',
key: 'a-2-2',
children: [],
}, {
element: 'a-2-3',
key: 'a-2-3',
children: [],
}],
}],
}]
答案 0 :(得分:3)
从ES6开始,您可以使用具有嵌套yield的生成器来展平迭代:
function* flatten(array){
for(const el of array){
yield el;
yield* flatten(el.children);
}
}
所以你可以这样做:
for(const el of flatten(yourdata)){
//...
}