繁体   English   中英

遍历数组

[英]Iterate over array of array

我有一个数组,如下所示:

=> [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]

我想按内部数组中元素的顺序重新排列它,例如:

=> [[1,6,11],[2,7,12],[3,8,13],[4,9,14],[5,10,15]]

我该如何实现?

我知道我可以迭代像

array1.each do |bla,blo|
  #do anything
end

但是内部数组的一面不是固定的。

p [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]].transpose
#=> [[1, 6, 11], [2, 7, 12], [3, 8, 13], [4, 9, 14], [5, 10, 15]]

Array上使用transpose方法

a = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
a.transpose
#=> [[1, 6, 11], [2, 7, 12], [3, 8, 13], [4, 9, 14], [5, 10, 15]]

请注意,这仅在数组长度相同时才有效。

如果要处理长度互不相同的转置数组,则应执行类似的操作

class Array
  def safe_transpose
    max_size = self.map(&:size).max
    self.dup.map{|r| r << nil while r.size < max_size; r}.transpose
  end
end

并会产生以下结果

a = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15,16]]
a.safe_transpose
#=> [[1, 6, 11], [2, 7, 12], [3, 8, 13], [4, 9, 14], [5, 10, 15], [nil, nil, 16]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM