ruby从数组中删除一个元素

我想从我的数组中删除(仅一个)元素。

例子:

x = [1,2,3,2] x.remove(2) result: x= [1,3] 

但是,我想得到[1,3,2]

谢谢

正如评论中提到的@ 7urkm3n,您可以使用x.delete_at删除第一次出现

 x.delete_at(x.index 2) 

 > x = [1,2,3,2] => [1, 2, 3, 2] > x.delete_at(x.index 2) => 2 > x => [1, 3, 2] 

你可以使用slice!(index, 1) 。 您可以使用index(element)获取要删除的元素的第一个索引

在你的情况下你只需要做: x.slice!(x.index(2), 1) (或者,如前所述, delete_at只提供索引)

你可以写

 x = [1,2,3,2] x.difference([2]) #=> [1, 3, 2] 

其中Array#difference是我在这里定义的答案。 由于我提出的方法的广泛应用,它被添加到Ruby核心。

假设

 x = [1,2,3,2,1,2,4,2] 

你希望删除前1 ,前2个24 。 要做到这一点,你会写

 x.difference([1,2,2,4]) #=> [3, 1, 2, 2] 

注意

 x.difference([1,2,2,4,4,5]) #=> [3, 1, 2, 2] 

给出相同的结果。

要删除最后的 1最后两个2 s和4 ,写入

 x.reverse.difference([1,2,2,4]).reverse #=> [1, 2, 3, 2]