3

データベースにクエリを実行する慣用的な方法を探しており、すべての値を列ごとにグループ化しています。

たとえば、命令:

@players = Player.pluck(:white, :black, :red, :blue, :yellow)

次のような多次元配列を返します。

[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

しかし、次のような配列のハッシュが必要です:

{
  white:  [1, 6, 11],
  black:  [2, 7, 12], 
  red:    [3, 8, 13],
  blue:   [4, 9, 14],
  yellow: [5, 10, 15]
}

すべての配列の最初の要素は「白」キーで格納され、すべての配列の 2 番目の要素は「黒」キーで格納されます。

4

1 に答える 1

8
a = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
[:white, :black, :red, :blue, :yellow].zip(a.transpose)
# => [[:white, [1, 6, 11]], [:black, [2, 7, 12]], [:red, [3, 8, 13]], [:blue, [4, 9, 14]], [:yellow, [5, 10, 15]]]
Hash[[:white, :black, :red, :blue, :yellow].zip(a.transpose)]
# => {:white=>[1, 6, 11], :black=>[2, 7, 12], :red=>[3, 8, 13], :blue=>[4, 9, 14], :yellow=>[5, 10, 15]}
于 2013-09-12T13:57:53.263 に答える