我在Ruby中有一个元素数组
[2,4,6,3,8]
例如,我需要删除值为3的元素
我怎么做呢?
我在Ruby中有一个元素数组
[2,4,6,3,8]
例如,我需要删除值为3的元素
我怎么做呢?
当前回答
因此,当3出现多次,而你只想删除第一次出现的3时,你可以简单地执行如下操作。
arr = [2, 4, 6, 3, 8, 10, 3, 12]
arr.delete_at arr.index 3
#This will modify arr as [2, 4, 6, 8, 10, 3, 12] where first occurrence of 3 is deleted. Returns the element deleted. In this case => 3.
其他回答
因此,当3出现多次,而你只想删除第一次出现的3时,你可以简单地执行如下操作。
arr = [2, 4, 6, 3, 8, 10, 3, 12]
arr.delete_at arr.index 3
#This will modify arr as [2, 4, 6, 8, 10, 3, 12] where first occurrence of 3 is deleted. Returns the element deleted. In this case => 3.
你也可以猴子修补它。我一直不明白为什么Ruby对哈希有except方法,而对数组没有:
class Array
def except value
value = value.kind_of(Array) ? value : [value]
self - value
end
end
现在你可以做:
[1,3,7,"436",354,nil].except(354) #=> [1,3,7,"436",nil]
Or:
[1,3,7,"436",354,nil].except([354, 1]) #=> [3,7,"436",nil]
假设你想在数组的多个位置按值删除3, 我认为ruby执行这个任务的方法是使用delete_if方法:
[2,4,6,3,8,3].delete_if {|x| x == 3 }
你也可以使用delete_if来删除'array of arrays'场景中的元素。
希望这能解决你的疑问
首次发生的无损清除:
a = [2, 4, 6, 3, 8]
n = a.index 3
a.take(n)+a.drop(n+1)
你可以简单地运行:
[2,4,6,3,8].delete(3)