我在Ruby中有一个元素数组

[2,4,6,3,8]

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

我怎么做呢?


当前回答

假设你想在数组的多个位置按值删除3, 我认为ruby执行这个任务的方法是使用delete_if方法:

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

你也可以使用delete_if来删除'array of arrays'场景中的元素。

希望这能解决你的疑问

其他回答

在ruby中编译所有不同的delete选项

delete -按值删除匹配的元素。如果有多个值匹配,则删除所有值。如果您不关心出现的次数或确定单个出现,则使用此方法。

a = [2, 6, 3, 5, 3, 7]
a.delete(3)  # returns 3
puts a       # return [2, 6, 5, 7]

delete_at -删除给定索引处的元素。如果你知道索引,就用这个方法。

# continuing from the above example
a.delete_at(2) # returns 5
puts a         # returns [2, 6, 7]

delete_if -删除block为true的每个元素。这将修改数组。数组在调用块时立即改变。

b = [1, 2, 5, 4, 9, 10, 11]
b.delete_if {|n| n >= 10}.  # returns [1, 2, 5, 4, 9]

reject -该函数将返回包含给定块为false的元素的新数组。顺序是用这个来维持的。

c = [1, 2, 5, 4, 9, 10, 11]
c.reject {|n| n >= 10}.  # returns [1, 2, 5, 4, 9]

拒绝!-同delete_if。数组在调用块时可能不会立即改变。 如果你想从数组中删除多个值,最好的选择如下所示。

a = [2, 3, 7, 4, 6, 21, 13]
b = [7, 21]
a = a - b    # a - [2, 3, 4, 6, 13]

你可以简单地运行:

[2,4,6,3,8].delete(3)

另一个选择:

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

a -= [3]

结果是

=> [2, 4, 6, 8] 

因此,当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, 我认为ruby执行这个任务的方法是使用delete_if方法:

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

你也可以使用delete_if来删除'array of arrays'场景中的元素。

希望这能解决你的疑问