В 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 >> 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]
Ответ 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]