Скажем, у меня есть массив [1,2,3,1,2,3]
, и я хочу удалить первый экземпляр (скажем) 2
из массива, дающий [1,3,1,2,3]
. Какой самый простой способ?Удалить первый экземпляр соответствующего элемента из массива
28
A
ответ
61
li.delete_at(li.index(n) || li.length)
li[li.length]
находится вне диапазона, поэтому || li.length
обрабатывает случай, когда n
нет в списке.
irb(main):001:0> li = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):002:0> li.delete_at(li.index(2) || li.length)
=> 2
irb(main):003:0> li.delete_at(li.index(42) || li.length)
=> nil
irb(main):004:0> li
=> [1, 3, 1, 2, 3]
12
Если || li.length
чтобы избежать отправки nil
в li.delete_at
(что приведет к TypeError), то более читаемым версия может выглядеть следующим образом
li.delete_at li.index(42) unless li.index(42).nil?
+6
Вероятно, вы хотите хранить 'li.index (42)' в переменной, чтобы предотвратить повторный поиск. Производительность будет намного лучше для больших массивов. – Kelvin
4
Может быть, это должно стать частью STDLIB :
class Array
def delete_first item
delete_at(index(item) || length)
end
end
Смежные вопросы
- 1. Как удалить первый экземпляр сопоставления из массива с помощью Мангуст
- 2. удалить первый элемент из массива
- 3. Удалить элементы из массива, соответствующего модели из файла
- 4. Удалить определенный экземпляр определенного элемента из строки
- 5. Как удалить первый элемент из массива?
- 6. угловой JS выберите первый экземпляр этого элемента
- 7. Swift generic удалить экземпляр класса из массива
- 8. Удаление элемента из списка и соответствующего значения
- 9. Печать значений из соответствующего массива
- 10. Как удалить первый элемент пользовательского элемента управления?
- 11. Удалить первый и последний экземпляр строки?
- 12. Как выбрать первый экземпляр элемента определенного класса enclosinga DOM элемента
- 13. Как найти первый экземпляр массива элементов
- 14. Ruby: Какой самый простой способ удалить первый элемент из массива?
- 15. Удалить первый индекс строки массива
- 16. Удалить первый элемент массива VBA
- 17. Удалить первый экземпляр строки с помощью PHP
- 18. удалить конкретный элемент элемента массива из другого массива
- 19. Выход из вмонтированного массива, не возвращающего первый экземпляр (PHP)
- 20. UnderscoreJS - как получить первый экземпляр значения из массива объектов?
- 21. Как удалить определенную область элемента из массива
- 22. Как удалить символ из элемента массива?
- 23. ActionScript 3.0 удалить спрайт из массива элемента
- 24. Удалить пробелы из начала каждого элемента массива
- 25. Удалить элементы из массива по типу элемента
- 26. Как удалить круглые скобки из элемента массива
- 27. Получить первый объект из массива
- 28. Удалить все AM/PM, но первый экземпляр в массиве
- 29. Удалить первый символ элементов массива в Perl
- 30. Как удалить первый символ из элемента списка sharepoint C#
спасибо. Я избивал голову, пытаясь выразить это элегантно. –
Я не понимаю '|| li.length' может кто угодно объяснить – gates
Любое значение в ruby можно рассматривать как логическое значение, при этом только false и nil вычисляются как false. Синтаксис с двойной трубкой является удобным сокращением. 'a || b' означает «a, если он не равен нулю, затем b». – erich2k8