在Ruby中,有没有办法轻松删除数组中的1个匹配?

时间:2011-01-19 03:49:42

标签: ruby

在Ruby中,数组减法或reject

>> [1,3,5,7,7] - [7]
=> [1, 3, 5]

>> [1,3,5,7,7].reject{|i| i == 7}
=> [1, 3, 5]

将删除数组中的所有条目。是否容易删除1次?

3 个答案:

答案 0 :(得分:26)

>> a = [1,3,5,7,7]

>> a.slice!(a.index(7))
=> 7

>> a
=> [1,3,5,7]

答案 1 :(得分:13)

我能想到的最好的是:

found = false
[1,3,5,7,7].reject{|i| found = true if !found && i == 7}

或破坏性地:

arr = [1, 2, 3, 5, 7, 7]
arr.delete_at( arr.index(7))
arr #=> [1, 2, 3, 5, 7]

答案 2 :(得分:-4)

虽然它没有直接回答您的问题,但uniq可能就是您想要的。

[1,3,5,7,7].uniq # => [1,3,5,7]