我在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)