我想从数组中删除(仅一个)元素。
示例:
x = [1,2,3,2]
x.remove(2)
result: x= [1,3]
但是,我想得到[1,3,2]
。
感谢
答案 0 :(得分:4)
在评论中提及@ 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]
答案 1 :(得分:0)
您可以使用slice!(index, 1)
。您可以使用index(element)
在您的情况下,您只需执行:x.slice!(x.index(2), 1)
(或者,如前所述,delete_at
仅提供索引)
答案 2 :(得分:0)
你可以写
x = [1,2,3,2]
x.difference([2])
#=> [1, 3, 2]
其中Array#difference
正如我已将其定义为here。由于I' ve proposed方法的广泛应用,它被添加到Ruby核心。
假设
x = [1,2,3,2,1,2,4,2]
并且您希望删除第一个1
,前两个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
和4
,请写
x.reverse.difference([1,2,2,4]).reverse
#=> [1, 2, 3, 2]