【问题标题】:How to best modify an array using .each如何使用 .each 最好地修改数组
【发布时间】:2016-10-22 13:03:04
【问题描述】:

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

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

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

最终结果是odds = [2,6,10,14,18]

【问题讨论】:

  • 您没有指定您使用的编程语言。请标记问题。

标签: arrays ruby each


【解决方案1】:

您可以使用map! 枚举器来修改数组中的每一项:

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

【讨论】:

    【解决方案2】:

    如果你真的想就地修改,而且你真的想使用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 }
    

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多