Cak*_*ler 0 javascript computer-science data-structures
例如,我们有一个JavaScript对象,它可以包含具有任意嵌套深度的其他对象.是否可以遍历此对象的每个元素而不使用递归?
如果没有,那么使用非递归迭代使数据结构遍历的最低要求是什么?
正如SLaks在上面写的那样,任何递归都可以用堆栈表示为循环.所以经过一段时间的思考,我想出了下一个解决方案:
var myobj = {
one: "hello",
two: "world",
three: {
one: 1,
two: 2,
three: 4,
four: {
one: true,
two: false
}
},
four: "!"
};
function traverse(obj) {
var stack = [];
stack.push(obj);
while (stack.length) {
for (var j in stack[0]) {
if (typeof stack[0][j] === 'object') {
stack.push(stack[0][j]);
} else {
console.log('%s: %s', j, stack[0][j]);
}
}
stack.shift();
}
}
traverse(myobj);
Run Code Online (Sandbox Code Playgroud)