Подтвердить что ты не робот

В Ruby существует ли способ легко удалить только одно совпадение в массиве?

В Ruby вычитание массива или reject

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

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

удалит все записи в массиве. Легко ли удалить только одно событие?

4b9b3361

Ответ 1

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

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

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

Ответ 2

Лучшее, о чем я могу думать:

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]

Ответ 3

Пока он не отвечает напрямую на ваш вопрос, uniq может быть тем, что вы хотите.

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