0

n subArrays Snの配列Aが与えられた場合、RubyでSn[i]メンバーの配列を選択するにはどうすればよいですか?

たとえばlanguages、次のような Array があるとします。

languages = [ ['Italiano', 'it'], ["English", 'en'], ["Française", 'fr' ] ]

配列を取得するにはどうすればよいですか...

locales_in_languages = ['it', 'en', 'fr' ]

...すべてのlanguage[1]オブジェクトを含むのはどれですか?

これを達成するための簡単で「ルビッシュな」方法はありますか?

4

5 に答える 5

5

一般的には次のようになります。

array.map { |subarray| subarray[i] }

各配列の最初 (または最後) の要素が必要な場合は、次のようにします。

array.map(&:first) # similar array.map(&:last)

方法についてはドキュメントを参照してくださいEnumerable#map

ところで、 Rails&:secondでは、、、、、さらにはも使用できます。&:third&:fourth&:fifth&:forty_two

于 2012-06-20T13:07:24.877 に答える
3

別の方法:

#encoding: utf-8
LANGUAGES = [ ['Italiano', 'it'], ["English", 'en'], ["Française", 'fr' ] ]
p LANGUAGES.transpose.last #=>["it", "en", "fr"]
于 2012-06-20T13:18:37.060 に答える
3

Array#transposeメソッドでそれを行うことができます:

irb(main):014:0> languages = [ ['Italiano', 'it'], ["English", 'en'], ["Française", 'fr' ] ]
=> [["Italiano", "it"], ["English", "en"], ["Française", "fr"]]
irb(main):015:0> languages.transpose[1]
=> ["it", "en", "fr"]
于 2012-06-20T13:19:23.233 に答える
1

確かに、それは呼ばれますmap

languages = [ ['Italiano', 'it'], ["English", 'en'], ["Française", 'fr' ]]
languages.map{|name, code| code } # => ["it", "en", "fr"]

ちなみに、配列LANGUAGES(すべて大文字) を呼び出すと、Ruby の命名規則に違反します (定数でない限り。定数のみが大文字で始まります)。

于 2012-06-20T13:07:27.873 に答える
0

Array.collect はこれで問題ありません。

物事をルビー流にしようとしても、物事を過度に複雑にする必要はありません.-

于 2012-06-20T13:07:56.393 に答える