Ответ 1
>> a = [1,3,5,7,7]
>> a.slice!(a.index(7))
=> 7
>> a
=> [1,3,5,7]
В Ruby вычитание массива или reject
>> [1,3,5,7,7] - [7]
=> [1, 3, 5]
>> [1,3,5,7,7].reject{|i| i == 7}
=> [1, 3, 5]
удалит все записи в массиве. Легко ли удалить только одно событие?
>> 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]