我正在使用Ruby 2.4。我有一个数组数组,我想获取每个数组的第n个元素(从“startIndex”数组开始),然后形成一个数组。所以我有
row_data = []
data_cols[startIndex..(data_cols.size)].each do |data_col|
row_data.push(data_col[row])
end
虽然上面的工作原理,但它似乎比我需要的代码更多。有没有更短的方式来写这个?
答案 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] }