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] }
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] }