2013-07-30 53 views
-1

我有这个数组的数组:阵列操作系统阵列改造d3.js JSON格式

[["abc", "123"], ["cde", "456"], ["cde", "674"]] 

而且我想这个数组以这种方式设置阵列:

{ "name": "test", "children": [ {"name": "abc", "children": [ {"name": "123"} ]}, {"name": "cde", "children": [ { "name": "456"},{"name": "674"} ]}]} 

我怎样才能让这种红宝石语言的转变?

在此先感谢。

+0

无效Ruby对象。 – sawa

+2

我不知道为什么在这个问题上有两个-ve投票看起来很不错。 – PriteshJ

+0

@ x13不是第一个数组。问题是您的预期产出。发布前你有没有尝试过这些? – sawa

回答

2

试试这个

require 'json' 
src_arr= [["abc", "123"], ["cde", "456"], ["cde", "674"]] 
tmp = {} # to collect all common node first 
src_arr.each do |arr| 
    if node = tmp[arr.first] # check if node exists 
     node['children'] << {'name' => arr.last} # append of exists 
    else 
     # add node if does not exists 
     tmp[arr.first] = {'name' => arr.first,'children' => [{'name' => arr.last}]} 
    end 
    end 
tree = {'name' => 'test','children' => tmp.values} 
puts tree 

#=> {"name"=>"test", "children"=>[{"name"=>"abc", "children"=>[{"name"=>"123"}]}, {"name"=>"cde", "children"=>[{"name"=>"456"}, {"name"=>"674"}]}]} 

puts JSON.generate(tree) 

#=> {"name":"test","children":[{"name":"abc","children":[{"name":"123"}]},{"name":"cde","children":[{"name":"456"},{"name":"674"}]}]} 
+0

非常感谢PriteshJ – x13