2016-10-16 16 views
0

新しい配列にハッシュの値が必要なハッシュの配列があります。ハッシュの配列は、数千のものがあり、これが好きです。ハッシュの配列を配列に変換する

array = [{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 

これを調べようとしましたが、ハッシュから変換する方法を見つけただけです。

どうすればいいですか?

+0

をあなたはどのような出力を追加することができますすべき? – jcm

+0

'array.flat_map {| h | h.values} ' –

答えて

1
a=[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 
puts a.map{|x|x.values}.flatten.inspect 

出力

["404", "302", "200"] 
+0

これを使用しようとすると、値の部分に未定義のメソッドが返されます。助言がありますか? – tbrent

+1

同じコードを使用しましたか?私のコードを実行してここに貼り付けたので、うまくいきます。どのバージョンのRubyを使用していますか? – Gopal

+0

私はそれをirbで試してみました。それは私のコードの中で何かでなければ動作しません。私は2.3.1を使用しています。 – tbrent

1
arr =[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 

arr.map { |h| h[:code] } 
    #=> ["404", "302", "200"] 

または、キー(今:code)の名​​前が、将来的に変更される可能性があります場合:

arr.map { |h| h.first.last } 
    #=> ["404", "302", "200"] 
+0

いいです!私はキーが等しいという事実に気付かなかった。また、私は 'h.first'が配列としてハッシュキー、値を変換することも知らない。 – Gopal

+0

@ Gopal、ハッシュの要素(キーと値のペア)が列挙されている場合は常にそうです。たとえば、 '{a:1、b:2} .each {| a | p a} 'は ' [:a、1] 'と' [:b、2] 'を出力します。 –

+0

はい、列挙型と.firstの関係は何ですか?なぜfirst。はキー、値の配列を返しますか? – Gopal

3
[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}].flat_map(&:values) 
#⇒ ["404", "302", "200"] 
関連する問題