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

在Ruby中,数组减法或reject

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

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

 >> a = [1,3,5,7,7] >> a.slice!(a.index(7)) => 7 >> a => [1,3,5,7] 

我能想到的最好的是:

 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] 

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

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