从Ruby中的数组数组中的一列中选择所有元素?

时间:2012-07-27 13:13:37

标签: ruby

我有一个数组数组:

arr = [["Foo1", "Bar1", "1", "W"], 
["Foo2", "Bar2", "2", "X"], 
["Foo3", "Bar3", "3", "Y"], 
["Foo4", "Bar4", "4", "Z"]]

我想要一个只包含每个数组的第三列的数组:

res = ["1", "2", "3", "4"]

我该怎么做?

我想输入类似的内容:

arr[][2]

但是想到更像Ruby的东西,我试过了:

arr.select{ |r| r[2] }

但这会返回整行。

3 个答案:

答案 0 :(得分:47)

您想要arr.map {|row| row[2]}

arr = [["Foo1", "Bar1", "1", "W"], 
["Foo2", "Bar2", "2", "X"], 
["Foo3", "Bar3", "3", "Y"], 
["Foo4", "Bar4", "4", "Z"]]

arr.map {|row| row[2]}
# => ["1", "2", "3", "4"]

答案 1 :(得分:15)

另一种方法:

arr.transpose[2]

答案 2 :(得分:1)

使用地图或收集 arr.map {| a |一个[2]}