Ruby - 如何对两个(也许更多)数组的每一项执行操作并将它们填充到新数组中?

Ruby - How do you perform an operation on each item of two (maybe more) arrays and populate them in a new array?

a = [6, 7, 8, 9, 10]
b = [1, 2, 3, 4, 5]

数组 a 的每一项都除以数组 b 的每一项,并放入一个名为 c 的新数组中。

c = [6, 3, 2, 2, 2]
a = [6, 7, 8, 9, 10]
b = [1, 2, 3, 4, 5]

c = a.zip(b).map { |e| e.reduce :/ }
#⇒  [
#    [0] 6,
#    [1] 3,
#    [2] 2,
#    [3] 2,
#    [4] 2
# ]

Array#zip 将数组压缩在一起,然后每个元素(压缩的 2 个项目的数组)用 Integer#/.

减少

我喜欢 mudasobwa 的 zip/map 解决方案,但这里有几个替代方案:

a = [6, 7, 8, 9, 10]
b = [1, 2, 3, 4, 5]

c = Array.new(a.size) { |i| a[i] / b[i] }
c = a.map.with_index { |x, i| x / b[i] }

特别是,如果不能保证数组的长度相同,我可能更喜欢 Array.new 解决方案,因为您可以轻松确保不会越界:

c = Array.new([a.size, b.size].min) { |i| a[i] / b[i] }