9
我们可以通过迭代在同一时间两个数组Array的zip
方法,如:是否有可能同时迭代三个数组?
@budget.zip(@actual).each do |budget, actual|
...
end
是否有可能重复三个阵列?我们可以使用transpose
方法来做同样的事吗?
我们可以通过迭代在同一时间两个数组Array的zip
方法,如:是否有可能同时迭代三个数组?
@budget.zip(@actual).each do |budget, actual|
...
end
是否有可能重复三个阵列?我们可以使用transpose
方法来做同样的事吗?
>> [1,2,3].zip(["a","b","c"], [:a,:b,:c]) { |x, y, z| p [x, y, z] }
[1, "a", :a]
[2, "b", :b]
[3, "c", :c]
transpose
也适用,但不像zip
,它会创建一个新的数组马上:
>> [[1,2,3], ["a","b","c"], [:a,:b,:c]].transpose.each { |x, y, z| p [x, y, z] }
[1, "a", :a]
[2, "b", :b]
[3, "c", :c]
注:
你不需要each
与zip,它需要一个块。
函数表达式也是可能的。例如,使用map
:sums = xs.zip(ys, zs).map { |x, y, z| x + y + z }
。
对于任意数量的阵列,你可以做xss[0].zip(*xss[1..-1])
或简单地xss.transpose
。
** HEAD EXPLODE ** –
非常感谢您的帮助。 –
+1通过'zip','transpose'或内置集合操作的数组操作,在Ruby中是超级强大的工具。你可以快速地处理大量数据。 –