我想转换这个数组
[['a', 'b'],['c', 'd'],['e', 'f']]
到这个哈希
{
"a" : "c",
"b" : "d"
},
{
"a" : "e",
"b" : "f"
}
怎么做?
我尝试使用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
# }
# ]
请注意,与此处介绍的其他解决方案不同,此解决方案会将第一个元素作为键映射到任意长度的尾部。
UPD对于没有红宝石的传统红宝石Array#to_h
:
values.map { |v| key.zip v }.map { |e| Hash[e] }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句