Ruby onRails3.2.2とRuby1.9.2を使用しています。
次の多次元が与えられますArray
:
[["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
取得したい(注:すべての「ネストされた」の最初の値のみを「抽出」したいArray
):
["value1", "value2", "value3"]
どうすればそれを賢くすることができますか?
Ruby onRails3.2.2とRuby1.9.2を使用しています。
次の多次元が与えられますArray
:
[["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
取得したい(注:すべての「ネストされた」の最初の値のみを「抽出」したいArray
):
["value1", "value2", "value3"]
どうすればそれを賢くすることができますか?
を使用Array#collect
して、外部配列の各要素のブロックを実行できます。最初の要素を取得するには、配列にインデックスを付けるブロックを渡します。
arr.collect {|ind| ind[0]}
使用中で:
arr = [["value1"、 "value1_other"]、["value2"、 "value2_other"]、["value3"、 "value3_other"]] => [["value1"、 "value1_other"]、["value2"、 "value2_other"]、["value3"、 "value3_other"]] arr.collect {| ind | ind [0]} => ["value1"、 "value2"、 "value3"]
の代わりに、各内部配列の最初の要素を取得するために{|ind| ind[0]}
使用できます。Array#first
arr.collect(&:first)
&:first
構文については、「 Ruby / RubyonRailsアンパサンドコロンショートカット」をお読みください。
>> array = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
=> [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
>> array.map { |v| v[0] }
=> ["value1", "value2", "value3"]
arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
Solution1 = arr.map {|elem| elem.first}
Solution2 = arr.transpose[0]