如何获取多个数组的第n个元素?

时间:2017-01-31 17:41:07

标签: arrays ruby

我正在使用Ruby 2.4。我有一个数组数组,我想获取每个数组的第n个元素(从“startIndex”数组开始),然后形成一个数组。所以我有

  row_data = []
  data_cols[startIndex..(data_cols.size)].each do |data_col|
    row_data.push(data_col[row]) 
  end

虽然上面的工作原理,但它似乎比我需要的代码更多。有没有更短的方式来写这个?

3 个答案:

答案 0 :(得分:3)

您需要做的就是

arr[start..finish].map { |a| a[n - 1] }

例如,让我们说你有一个像这样的多维数组

arr = [[4,6,5],[3,4,7],[9,1,2]];

并且您希望从第一个索引开始在每个数组中找到中间元素。你会这样做

arr[1..2].map { |a| a[1] };
=> [4,1]

如果您想将其存储在新变量中,请在上面的行前面添加var =

如果要破坏性地修改数组,请改用map!

答案 1 :(得分:0)

怎么样:

new_arr = Array.new
arr[startIndex..endIndex].each do |a|
  new_arr << a[n - 1]
end

答案 2 :(得分:0)

使用您的变量名称,这将是您的代码的较短版本:

data_cols.drop(startIndex).map{ |data_col| data_col[row] }