繁体   English   中英

在Ruby中乘以子数组itens

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM