13

Ruby onRails3.2.2とRuby1.9.2を使用しています。

次の多次元が与えられますArray

[["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]

取得したい(:すべての「ネストされた」の最初の値のみを「抽出」したいArray):

["value1", "value2", "value3"]

どうすればそれを賢くすることができますか?

4

3 に答える 3

27

を使用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アンパサンドコロンショートカット」をお読みください。

于 2012-06-26T09:19:11.397 に答える
2
>> 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"]
于 2012-06-26T09:20:21.683 に答える
1
arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]

Solution1 = arr.map {|elem| elem.first}

Solution2 = arr.transpose[0]
于 2017-07-25T20:24:19.620 に答える