我想转换:
[:one, :two, :three]
为:
{one: :one, two: :two, three: three}
到目前为止,我正在使用它:
Hash[[:basic, :silver, :gold, :platinum].map { |e| [e, e] }]
但我想通过其他方式知道是否可能?
这是在模型中的Rails enum
定义中使用,以将值保存为db中的字符串。
答案 0 :(得分:6)
a = [:one, :two, :three]
a.zip(a).to_h
#=> {:one=>:one, :two=>:two, :three=>:three}
[a, a].transpose.to_h
#=> {:one=>:one, :two=>:two, :three=>:three}
答案 1 :(得分:1)
以下是map
的另一种方式:
>> [:one, :two, :three].map { |x| [x,x] }.to_h
=> {:one=>:one, :two=>:two, :three=>:three}
答案 2 :(得分:1)
我承认了一个挂断:如果有选择,我更喜欢从头开始构建哈希,而不是创建一个数组并将其转换为哈希。
[:one, :two, :three].each_with_object({}) { |e,h| h[e]=e }
#=> {:one=>:one, :two=>:two, :three=>:three}