我需要使用key_name和一组结果中的值创建一个哈希值。
如果我告诉你我拥有的东西,那就很清楚了:
results.map{|r| {r.other_model.key_name=>r.value} }
这就是给我这个:
[{"api_token"=>"stes"}, {"Name"=>"nononono"}]
但我想要这个:
{"api_token"=>"stes", "Name"=>"nononono"}
在ruby上执行此操作的最美妙方法是什么?
答案 0 :(得分:2)
使用Hash::[]
Hash[results.map { |r| [r.other_model.key_name,r.value] } ]
在Ruby 2.1.0中,我们有Hash#to_h
results.map { |r| [r.other_model.key_name,r.value] }.to_h
或使用Enumerable#each_with_object
results.each_with_object({}) { |r,h| h[ r.other_model.key_name ] = r.value }
答案 1 :(得分:1)
到目前为止,我最好的方法是:
Hash[results.map{|r| [r.other_model.key_name, r.value] } ]
答案 2 :(得分:0)
results.inject({}){|h, r| h[r.other_model.key_name] = r.value; h}
这比创建中间数组然后将其转换为哈希的其他答案更有效。