gpt4 book ai didi

javascript - 是否可以以非递归方式遍历 JavaScript 中的对象?

转载 作者:行者123 更新时间:2023-12-05 08:34:22 28 4
gpt4 key购买 nike

例如,我们有一个 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);

关于javascript - 是否可以以非递归方式遍历 JavaScript 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com