[英]Multiplying sub-arrays itens in Ruby
好的,我想将使用以下each_slice(2)
创建的子数组中的数字相乘: each_slice(2)
到目前为止,我得到了:
inputArray = [1, 2, 3, 4, 5, 6]
inputArray.each_slice(2).to_a #[[1, 2], [3, 4], [5, 6]]
我已经尝试了什么:
if inputArray.length % 2 == 0
newArr = inputArray.each_slice(2).to_a
newArr = newArr.max #using .max works, but it doesn't always return the rigth value
newArr.inject(:*)
我正在努力达到这个结果:
#[[2],[12],[30]]
作为Ruby和程序设计的新手,我没有主意
您在each_slice
的右边。 这应该为您做:
input_array.each_slice(2).map { |x, y| [x * y] }
=> [[2], [12], [30]]
尽管不需要,但您不需要在其中使用to_a
,尽管它可以与嵌套数组一起使用。
这会遍历每个子数组(或切片),并返回一个数组,其中每个块对每个块求值。 例如,此处将两个元素相乘并将它们包装在一个子项子数组中。
希望对您有所帮助-如果您有任何疑问,请告诉我!
您几乎已经掌握了,但是您需要以正确的方式组合事物:
list = [1, 2, 3, 4, 5, 6]
list.each_slice(2).map { |l| [ l.inject(:*) ] }
# => [[2], [12], [30]]
inject
操作需要在map
内移动,因为您不仅要变换一项,而且要依次变换它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.