将嵌套结构转换为扁平结构?

时间:2016-06-08 14:46:03

标签: javascript angularjs algorithm

我有一个嵌套结构如下:

       arr[3].title="a3";        
       arr[3].nextArr=[];
       arr[2].title="a2"; 
       arr[2].nextArr=arr[3];
       arr[1].title="a1"; 
       arr[1].nextArr=arr[2];
       arr[0].title="a0"; 
       arr[0].nextArr=arr[1];

喜欢这里!:

|_
  |_
    |_

如你所见,我有一个名为arr的数组,有四个成员。

如何从arr中创建四个独立的数组?

arrayOne=[{title:"a1"},{nextArr:[]}];    
arraytwo=[{title:"a2"},{nextArr:[]}];
.
.
.

更新:我需要在AngularJS controller.js中进行转换。我收到服务器的响应,其中包含一个如上所述的数组。我必须让它平坦。内部数组的数量不是常数。我没有提到,因为我不知道算法。但是,根据答案,如果我更多地解释它似乎会更好。

Result = {arr[title:"a0",nextArr:{title:"a1",nextArr:{title:"a2",nextArr:{......}}}]};

1 个答案:

答案 0 :(得分:0)

您可以使用yield创建递归遍历层次结构的枚举器:

public IEnumerable<{class}> Flatten({class}[] data)
{
    foreach({class} parent in data)
    {
        yield return parent;

        foreach({class} child in flatten(parent.nextArr))
            yield return child;
    }
}
相关问题