ruby从数组中删除一个元素

时间:2016-04-14 22:53:56

标签: ruby-on-rails ruby

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

示例:

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


result: x= [1,3]

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

感谢

3 个答案:

答案 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,前两个24。要做到这一点,你会写

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

请注意

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

给出相同的结果。

要删除最后 1最后两个24,请写

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