红宝石产生从平面阵列

问题描述:

树结构我想从以下数据生成树型结构:红宝石产生从平面阵列

[ 
{"first_name" => "Test", "id" => "1", "parent_id" => ""}, 
{"first_name" => "Test1", "id" => "2", "parent_id" => "1"}, 
{"first_name" => "Test2", "id" => "3", "parent_id" => "1"}, 
{"first_name" => "Test3", "id" => "4", "parent_id" => "2"} 
] 

我想创建Ruby脚本来构建以下结构:

[ 
{ 
    "first_name" => "Test", 
    "id" => "1", 
    "children" => [ 
    { 
    "first_name" => "Test1", 
    "id" => "2", 
    "children" => [ 
     { 
     "first_name" => "Test3", 
     "id" => "4" 
     } 
    ] 
    }, 
    { 
     "first_name" => "Test2", 
     "id" => "3" 
    } 
} 
] 

你有在这种情况下的一些提示?

+2

这是功课吗? – Max

+0

与http://*.com/q/18829289/3910390重复 – Penguin

给定一个特定的节点,很容易找到该节点的子节点。关键是要按正确的顺序来做,不要重复任何事情。因此,您可以从根开始,将节点分为两组:添加到树中的节点以及没有的节点。然后,只需遍历树中的节点,添加它们的子节点,并将子节点从不在树中的节点集移到树中的节点集。

我可以稍后添加一些Ruby代码,但现在不清楚您需要什么。