3 回答

TA贡献1816条经验 获得超6个赞
let y = {
name: 'parent',
children: [
{name: 'child1', children: []},
{
name: 'child2', children: [
{name: 'grandChild1', children: []}
]
},
]
};
let getNames = y => [y.name, ...y.children.flatMap(getNames)];
let names = getNames(y);
console.log(names);

TA贡献1828条经验 获得超3个赞
您可以采用递归函数。
const
getNames = array => array.flatMap(({ name, children }) => [name, ...getNames(children)]);
var array = [{ name: 'parent', children: [{ name: 'child1', children: [] }, { name: 'child2', children: [{ name: 'grandChild1', children: [] }] }] }];
console.log(getNames(array));

TA贡献1802条经验 获得超10个赞
这是基本递归。制作一个循环数据并与孩子一起调用自身的函数。
var myData = [{
name: 'foo',
children: [{
name: 'foo-1',
children: [{
name: 'foo-1-1'
}]
}, {
name: 'foo-2',
children: [{
name: 'foo-2-1'
}]
}]
}]
function loopOver(array, result) {
array.forEach( function (data) {
console.log(data.name)
result.push(data.name)
if (data.children) {
return loopOver(data.children, result)
}
})
return result
}
console.log(loopOver(myData, []))
添加回答
举报