假设我有一个能容纳自身的其它实例的类:如何递归获取嵌套对象中的所有子项的列表?
function Thing() {
this.subThings = [];
}
我添加n
subThings
顶端的事情:
var rootThing = new Thing();
rootThing.subThings.push(new Thing());
rootThing.subThings.push(new Thing());
rootThing.subThings.push(new Thing());
然后我添加n
subThings
的一些rootThing
的的subThings
:
rootThing.subThings[0].subThings.push(new Thing());
rootThing.subThings[0].subThings.push(new Thing());
rootThing.subThings[0].subThings.push(new Thing());
在th是点,结构是这样的:
rootThing
|
+--subThing
| |
| +--subThing
| |
| +--subThing
| |
| +--subThing
|
+--subThing
|
+--subThing
所以,我怎么可以得到所有的subThing
S的rootThing
列表和所有的他们subThing
S'
function getAllChildren(beginNode) {
var allChildren = [];
beginNode.subThings.forEach(function(childNode) {
allChildren.push(childNode);
// allChildren = allChildren.concat(childNode.subThings); // something along these lines
});
return allChildren;
}
console.log(getAllChildren(rootThing));
'console.dir(rootThing)':) –
'的console.log(JSON.stringify(rootThing,假的,'“)) ' – lxe
想象一下,只有一个级别,并实现了一个打印'事物'+它的后代的函数。然后发布。如果你这样做,我们会告诉你如何将这个函数改变为在几个按键中递归。 – zerkms