【问题标题】:How can I replace given values in an array with different values? [duplicate]如何用不同的值替换数组中的给定值? [复制]
【发布时间】:2017-06-26 19:05:56
【问题描述】:

我有一个数组,其中一些值为 nil。我想用“0”替换那些零。

所以如果我的数组是@array = [nil, "2", nil, nil, "f"],我希望发生这种情况:

 > @array.method
=> ["0", "2", "0", "0", "f"]

我尝试使用 gsub,但我收到“未定义的方法 'gsub' for Array”错误。

【问题讨论】:

    标签: ruby-on-rails arrays ruby gsub


    【解决方案1】:

    您可以在数组上使用map 并检查元素是否为nil,如果是则替换为"0",如果不是则保留该值:

    array = [nil, "2", nil, nil, "f"]
    p array.map{|e| e.nil? ? '0' : e}
    # => ["0", "2", "0", "0", "f"]
    

    【讨论】:

    • 这也隐藏了false对象。
    【解决方案2】:
    @array = [nil, "2", nil, nil, "f"]
     => [nil, "2", nil, nil, "f"] 
    
    @array.map {|x| x ? x : "0"}
    => ["0", "2", "0", "0", "f"] 
    

    【讨论】:

      【解决方案3】:

      没有用于替换数组中的 nil 的内置函数,所以是的,map 是要走的路。如果更短的版本会让你更快乐,你可以这样做:

      array.map {|e| e ? e : "0"}
      

      【讨论】:

        猜你喜欢
        • 2019-08-05
        • 2020-11-10
        • 1970-01-01
        • 2016-04-20
        • 2020-02-05
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多