我有一个具有键属性和值属性的对象列表。
我想将它转换为一个对象,该对象包含以键和值命名的属性。
例子会让它更清楚...
这个
[{
:key => "key1",
:value => "value1"
}, {
:key => "key2",
:value => "value2"
}]
应该变成这样:
{
:key1 => "value1"
:key2 => "value2"
}
我确信有一条线可以让它发生 谢谢
最佳答案
a = [{
:key => "key1",
:value => "value1"
}, {
:key => "key2",
:value => "value2"
}]
Hash[a.map { |h| [h[:key], h[:value]] }]
# => {"key1"=>"value1", "key2"=>"value2"}
Hash[a.map { |h| h.values_at(:key, :value) }]
# => {"key1"=>"value1", "key2"=>"value2"}
Hash[a.map { |h| [h[:key].to_sym, h[:value]] }]
# => {:key1=>"value1", :key2=>"value2"}
a.each_with_object({}) {|h,g| g.update({h[:key].to_sym => h[:value]}) }
# => {:key1=>"value1", :key2=>"value2"}
关于ruby - 将键值对象数组转换为键值对象(ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508999/