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个2
和4
。 要做到这一点,你会写
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]