3 ruby arrays activerecord ruby-on-rails ruby-2.0
我正在寻找一种查询数据库的惯用方法,并按列分组所有值.
例如,指令:
@players = Player.pluck(:white, :black, :red, :blue, :yellow)
Run Code Online (Sandbox Code Playgroud)
返回一个多维数组,如下所示:
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
Run Code Online (Sandbox Code Playgroud)
但我需要这样的数组哈希:
{
white: [1, 6, 11],
black: [2, 7, 12],
red: [3, 8, 13],
blue: [4, 9, 14],
yellow: [5, 10, 15]
}
Run Code Online (Sandbox Code Playgroud)
如果所有数组的第一个元素都使用'white'键存储,则所有数组的第二个元素都存储为'black'键,依此类推.
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]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |