循环深嵌套数组

时间:2010-08-15 21:43:00

标签: javascript loops

我在这里问一个嵌套数组问题。我有一个文件说,“content.json”有javascript变量,json作为json中的值,有对象作为值,对象作为每个对象的值。我的意思是要达到最终价值需要克服深层链条,并且尚未确定根部有多少元素以及任何阶段有多少元素。

我必须考虑采用何种类型的循环来以某种格式显示<pre></pre>块的结果?

我因为内存问题而避免递归,因此应该实现循环。

由于

1 个答案:

答案 0 :(得分:1)

基本上,避免内存问题的递归是一个错误。考虑一个深层嵌套的对象,如

var obj = {{{{{{{{{thing: 0}}}}}}}}}

在伪代码中,您可以使用

将其检查到任何深度
getThing(obj)
if obj == nul return
if obj.thing is defined you're at the bottom
// otherwise
getThing(obj[0])

对于每次递归,你使用的所有内存都是一个堆栈帧:基本上是一个返回地址和一个指针。在这种情况下,大约18个字的记忆。

你在做什么本质上是一棵树;你只需要 lg 深度内存来先递归地探索树深度;如果您愿意, lg 项目数量 / 2额外内存。 (流行测验:为什么这是真的?)