4

私はこれまで解析した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}, ...]

とのキーと値bc使用してハッシュの新しい配列を作成するにはどうすればよいですか?キーを渡して値を返し、キーを維持したい。だから私は最終的に:key = bkey = c

[{:b=>value2, :c=>value3}, {:b=>value6, :c=>value7}, {:b=>value10, :c=>value11}, ...]
4

1 に答える 1

8

純粋なルビー

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]キーのみを選択します。その中にさらに追加することができます。

レール

Hash#sliceRailsを使用している場合は、よりきれいに使用しましょう:

b_and_c_array = array.map{|a| a.slice(:b, :c) }
于 2012-11-12T21:14:50.910 に答える