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

Arrays Ruby—如何对两个(可能更多)数组中的每一项执行操作并将它们填充到新数组中?,arrays,ruby,iterator,each,operations,Arrays,Ruby,Iterator,Each,Operations,数组a的每一项都被数组b的每一项所除,然后放入一个名为c的新数组中 a = [6, 7, 8, 9, 10] b = [1, 2, 3, 4, 5] 将数组压缩在一起,然后使用Integer\#/减少每个元素(压缩了2个项目的数组) 将数组压缩在一起,然后使用Integer#/减少每个元素(压缩了2个项目的数组),我喜欢mudasobwa的zip/map解决方案,但这里有两个备选方案: a = [6, 7, 8, 9, 10] b = [1, 2, 3, 4, 5] c = a.zip(b)

数组a的每一项都被数组b的每一项所除,然后放入一个名为c的新数组中

a = [6, 7, 8, 9, 10]
b = [1, 2, 3, 4, 5]
将数组压缩在一起,然后使用
Integer\#/
减少每个元素(压缩了2个项目的数组)


将数组压缩在一起,然后使用
Integer#/

减少每个元素(压缩了2个项目的数组),我喜欢mudasobwa的zip/map解决方案,但这里有两个备选方案:

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.new解决方案,因为您可以轻松地确保不会超出界限:

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

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

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.new解决方案,因为您可以轻松地确保不会超出界限:

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

为什么是那张不高兴的脸?:)
.map{e | e.reduce://}比
更好(更快、更聪明等)。map{a、b | a/b}
?@sergioturentsev愚人节ruby公关建议:符号应该以
:)开头,而不是
a/b
对于一个ruby初学者来说,看起来更容易理解。但是经过一些思考,我必须承认使用
.reduce://
更优雅;它允许将所有内容包装到一个方法中,该方法将操作(
:/
:+
等)作为参数,并可以以这种方式重用。@axiac还接受3个(或更多)数组作为开箱即用的输入。只需将其更改为
a.zip(b,c,d)
,即可完成所有设置。对于十个数组和
:+
来说,显式地写总和是很烦人的。为什么是不高兴的脸?:)
.map{e | e.reduce://}比
更好(更快、更聪明等)。map{a、b | a/b}
?@sergioturentsev愚人节ruby公关建议:符号应该以
:)开头,而不是
a/b
对于一个ruby初学者来说,看起来更容易理解。但是经过一些思考,我必须承认使用
.reduce://
更优雅;它允许将所有内容包装到一个方法中,该方法将操作(
:/
:+
等)作为参数,并可以以这种方式重用。@axiac还接受3个(或更多)数组作为开箱即用的输入。只需将其更改为
a.zip(b,c,d)
,即可完成所有设置。对于十个数组和
:+
来说,显式地写总和是很烦人的。
数组[a,b]。transpose.map{a,b | a/b}
数组[a,b]。transpose.map{a,b | a/b}