如何用不同的值替换数组中的给定值?
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"}
我有一个数组,其中有些值为 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"}