2013-07-30 127 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