如何用不同的值替换数组中的给定值?

How can I replace given values in an array with different values?

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

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

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

我尝试使用 gsub,但出现 "undefined method 'gsub' for Array" 错误。

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

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

@array.map {|x| x ? x : "0"}
=> ["0", "2", "0", "0", "f"] 

没有内置函数可以替换数组中的 nil,所以是的,map 是可行的方法。如果一个较短的版本会让你更快乐,你可以这样做:

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