我在Ruby中有一个元素数组

[2,4,6,3,8]

例如,我需要删除值为3的元素

我怎么做呢?


当前回答

如果你还想让这个删除操作具有可链性,这样你就可以删除一些项并继续在结果数组上进行链接操作,请使用tap:

[2, 4, 6, 3, 8].tap { |ary| ary.delete(3) }.count #=> 4

其他回答

我喜欢在其他答案中提到的-=[4]方式来删除值为4的元素。

但有这样一种方法:

[2,4,6,3,8,6].delete_if { |i| i == 6 }
=> [2, 4, 3, 8]

在“基本数组操作”中提到的map函数之后。

因此,当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.

我不确定是否有人已经声明了这一点,但Array.delete()和-= value将删除数组中传递给它的每个值的实例。为了删除特定元素的第一个实例,您可以执行如下操作

arr = [1,3,2,44,5]
arr.delete_at(arr.index(44))

#=> [1,3,2,5]

有一种更简单的方法。我并不是说这是最佳实践,但这是应该被认可的。

我想我明白了:

a = [3, 2, 4, 6, 3, 8]
a.delete(3)
#=> 3
a
#=> [2, 4, 6, 8]

另一个选择:

a = [2,4,6,3,8]

a -= [3]

结果是

=> [2, 4, 6, 8]