我在这里问一个嵌套数组问题。我有一个文件说,“content.json”有javascript变量,json作为json中的值,有对象作为值,对象作为每个对象的值。我的意思是要达到最终价值需要克服深层链条,并且尚未确定根部有多少元素以及任何阶段有多少元素。
我必须考虑采用何种类型的循环来以某种格式显示<pre></pre>
块的结果?
我因为内存问题而避免递归,因此应该实现循环。
由于
答案 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额外内存。 (流行测验:为什么这是真的?)