0
我有存儲在@colors實例變量解析的數據的JSON文件,如下所示:JSON解析成Ruby的迭代器
[{:color=>"red", :value=>"#f00"} {:color=>"green", :value=>"#0f0"} {:color=>"blue", :value=>"#00f"} {:color=>"cyan", :value=>"#0ff"} {:color=>"magenta", :value=>"#f0f"} {:color=>"yellow", :value=>"#ff0"} {:color=>"black", :value=>"#000"}]
現在我想通過這個輸出迭代的圖,其中創建一個表有
<tr><td>color</td><td>value</td></tr>
當我得到這樣的另一個實例變量 -
@even_colors = @colors.values_at(* @colors.each_index.select {|i| i.even?}).map(&:values)
我得到的AR數組由每一個其他顏色/值對射線
[["red", "#f00"], ["blue", "#00f"], ["magenta", "#f0f"], ["black", "#000"]]
但我想創建兩個單獨的陣列,一個僅由所指示的顏色名稱:顏色(紅色,藍色等),而另一個包括只是由值指示的十六進制(#f00,#00f等)。我似乎無法弄清楚如何做到這一點。任何人有任何建議?與通
names = @colors.map { |h| h[:color] }
hexes = @colors.map { |h| h[:value] }
,或者你可以它:謝謝...
謝謝!你是對的,我不需要兩個數組。你的第二個建議完美運作。我在看到這個語法之前我想我還沒有內化它! – drollwit