0

我有类似的东西:

[ {}, {children:[{}, {}]} , {} ]  #each element cane be any level deep

并希望在不递归的情况下对其进行迭代。只是为了测试性能优势。有什么帮助吗?

4

2 回答 2

1

每个递归函数都可以被简化为一个函数,它保留自己的堆栈 - 问题是:它更快吗?我猜不是。

我的意思是(在伪代码中)

function flatten(something) {
  var ping=[];
  var pong=[];
  repeat {
    if (ping is empty) {
      if (something is empty) break;
      else ping.prepend(something.shift());
    }

    var element=ping.shift();
    if (element has children)
      foreach (child of element in reverse order) ping.prepend(child);
    else
      pong.append(element);
  }

  return pong;
}

调用flatten(your_input_object)将导致其条目的“天真人类枚举”列表

于 2013-07-19T20:28:59.053 回答
0

我可能错了,但是如果您能够检查数组中是否有以下元素,您可以编写嵌套的 while 循环吗?

于 2013-07-19T20:16:58.270 回答