如何从此对象获取所有名称?
var familyTree = {name: 'Alex',
children:[
{name: 'Ricky',
children:'[...]'}
{name: 'John',
children:[{name: 'Tom',
children: '[...]'}]}]};
它会执行Alex Ricky John Tom。
答案 0 :(得分:1)
您可以编写一个简单的递归函数来遍历树的内容:
dumpsys power |
sed -n '/Wake Locks: size=3/,/^$/ p' |
sed -e 's/.*pid=\([0-9]*\).*/\1/' |
while read pid; do
echo "You want to kill ${pid}"
done
答案 1 :(得分:1)
对于想要返回数组而不是仅仅记录到控制台的更灵活的情况,这是另一种以深度优先遍历和参数传递递归累积数组的方法:
function storeNames(tree, names) {
(names = names || []).push(tree.name);
for(var i = 0; i < tree.children.length; i++) {
storeNames(tree.children[i], names);
}
return names;
}
这是另一种以更多功能风格编写的方法:
function storeNames(tree) {
return Array.prototype.concat(tree.name,
tree.children.map(function(child) {
return storeNames(child);
}).reduce(function(flattenedArr, nestedArr) {
return flattenedArr.concat(nestedArr);
})
);
}