Arrays 如何最好地使用.each修改数组

Arrays 如何最好地使用.each修改数组,arrays,ruby,each,Arrays,Ruby,Each,我正在使用Ruby,我正在重新学习数组并试图更好地理解它们。我知道它们是什么,但从未充分利用它们。我有一个数组,赔率,并想在它的每一个数字加倍。我提出了以下解决方案;然而,我想看看是否有一个更优雅/简单的解决方案来解决我的问题 odds = [1,3,5,7,9] odds.each do |x| odds[odds.index(x)]=x*2 end 最终结果是赔率=[2,6,10,14,18]你可以使用地图枚举器以修改数组中的每个项: odds.map!{ |x| x*2}

我正在使用Ruby,我正在重新学习数组并试图更好地理解它们。我知道它们是什么,但从未充分利用它们。我有一个数组,赔率,并想在它的每一个数字加倍。我提出了以下解决方案;然而,我想看看是否有一个更优雅/简单的解决方案来解决我的问题

odds = [1,3,5,7,9]

odds.each do |x|
    odds[odds.index(x)]=x*2
end

最终结果是
赔率=[2,6,10,14,18]
你可以使用
地图枚举器以修改数组中的每个项:

odds.map!{ |x| x*2} 

你可以使用
地图枚举器以修改数组中的每个项:

odds.map!{ |x| x*2} 

如果您真的想就地修改,并且真的想使用
每个
,我想您的方法和任何方法一样好。它感觉不太习惯,但它确实满足您所声明的约束条件

以下是一些更常见的方法:

Array.map

使用
map
映射数组不会修改原始数组(它不在适当的位置),这通常是一件好事,但可能不是您想要的:

odds.map { |x| x*2 }
Array.map

如果确实要修改原始数组,可以使用
map要映射到位:

数组。每个索引

您确实特别询问了
每个
,因此如果您想使用
每个
,并且要修改原始数组,
每个索引
可能是您的最佳选择:

odds.each_index { |i| odds[i] *= 2 }

如果您真的想就地修改,并且真的想使用
每个
,我想您的方法和任何方法一样好。它感觉不太习惯,但它确实满足您所声明的约束条件

以下是一些更常见的方法:

Array.map

使用
map
映射数组不会修改原始数组(它不在适当的位置),这通常是一件好事,但可能不是您想要的:

odds.map { |x| x*2 }
Array.map

如果确实要修改原始数组,可以使用
map要映射到位:

数组。每个索引

您确实特别询问了
每个
,因此如果您想使用
每个
,并且要修改原始数组,
每个索引
可能是您的最佳选择:

odds.each_index { |i| odds[i] *= 2 }

您没有指定所使用的编程语言。请标记问题。您没有指定使用的编程语言。请把问题贴上标签。