我正在使用Ruby,我正在重新学习数组并试图更好地理解它们。我知道它们是什么,但从未充分利用它们。我有一个数组,赔率,并希望加倍其中的每个数字。我提出了以下解决方案;但是,我想看看是否有一个更优雅/简单的解决方案来解决我的问题。
odds = [1,3,5,7,9]
odds.each do |x|
odds[odds.index(x)]=x*2
end
最终结果为odds = [2,6,10,14,18]
答案 0 :(得分:3)
您可以使用map!
枚举器修改数组中的每个项目:
odds.map!{ |x| x*2}
答案 1 :(得分:1)
如果你真的想要进行修改,并且你真的想使用each
,我想你的方法就像任何一样好。它并不像惯用语,但它确实符合您规定的约束条件。
以下是一些更常见的方法:
<强> Array.map 强>
使用map
映射数组不会修改原始数组(它不是就地),这通常是一件好事,但它可能不是你想要的寻找:
odds.map { |x| x*2 }
<强> Array.map!强>
如果您确实想要修改原始数组,可以使用map!
映射就地:
odds.map! { |x| x*2 }
<强> Array.each_index 强>
您确实询问了each
,因此如果您想使用each
而想要修改原始数组,each_index
可能是您最好的选择:
odds.each_index { |i| odds[i] *= 2 }