Ahm*_*mza 2 ruby ruby-on-rails ruby-2.2
我想转换这个数组
[['a', 'b'],['c', 'd'],['e', 'f']]
Run Code Online (Sandbox Code Playgroud)
这个哈希
{
"a" : "c",
"b" : "d"
},
{
"a" : "e",
"b" : "f"
}
Run Code Online (Sandbox Code Playgroud)
怎么做?
我试图使用group_by和正常的迭代器,但到目前为止没有运气.有任何想法吗?
? arr = [[:a, :b],[:c, :d],[:e, :f],[:g, :h]]
? key, values = arr.first, arr[1..-1]
? values.map { |v| key.zip v }.map &:to_h
#? [
# [0] {
# :a => :c,
# :b => :d
# },
# [1] {
# :a => :e,
# :b => :f
# },
# [2] {
# :a => :g,
# :b => :h
# }
# ]
Run Code Online (Sandbox Code Playgroud)
请注意,与此处提供的其他解决方案不同,此处将把第一个元素作为键映射到任意长度的尾部.
UPD对于遗产红宝石,没有Array#to_h:
values.map { |v| key.zip v }.map { |e| Hash[e] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |