我有一个具有独特元素的数组.有没有办法在不使用索引值的情况下用另一个值替换它中的某个值?
例子:
array = [1,2,3,4]
if array.include? 4
# "replace 4 with 'Z'"
end
array #=> [1,2,3,'Z']
hash = {"One" => [1,2,3,4]}
if hash["One"].include? 4
# "replace 4 with 'Z'"
end
hash #=> {"One" => [1,2,3,'Z']}
Run Code Online (Sandbox Code Playgroud)
Joh*_*son 21
p array.map { |x| x == 4 ? 'Z' : x }
# => [1, 2, 3, 'Z']
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
array[array.index(4)] = "Z"
Run Code Online (Sandbox Code Playgroud)
如果元素不一定在数组中,那么
if i = array.index(4)
array[i] = "Z"
end
Run Code Online (Sandbox Code Playgroud)
您可以使用Array#map
array = array.map do |e|
if e == 4
'Z'
else
e
end
end
Run Code Online (Sandbox Code Playgroud)
要编辑数组,而不是创建一个新数组,请使用Array#map!
如果您要替换多个内容,可以使用哈希将旧内容映射到新内容:
replacements = {
4 => 'Z',
5 => 'five',
}
array = array.map do |e|
replacements.fetch(e, e)
end
Run Code Online (Sandbox Code Playgroud)
这使得使用Hash #fetch的一个特性,如果找不到该键,则第二个参数用作默认值.