我从api返回了一些数据,我已将其解析为:
[{:a=>value1, :b=>value2, :c=>value3, :d=>value4}, {:a=>value5, :b=>value6, :c=>value7, :d=>value8},{:a=>value9, :b=>value10, :c=>value11, :d=>value12}, ...]
如何使用b
和c
的{{1}}和key = b
的键和值创建新的哈希数组?我想传递密钥并返回值并保持密钥。所以我想最终:
key = c
答案 0 :(得分:6)
array = [{:a=>'value1', :b=>'value2', :c=>'value3', :d=>'value4'}, {:a=>'value1', :b=>'value2', :c=>'value3', :d=>'value4'}]
b_and_c_array = array.map{|a| a.select{|k, _| [:b, :c].include?(k)} }
我们使用将返回结果数组的map
方法获取每个哈希值。对于每个哈希,我们只选择[:b, :c]
个密钥。你可以在里面添加更多。
如果使用Rails,让我们使用Hash#slice
,更漂亮:
b_and_c_array = array.map{|a| a.slice(:b, :c) }