Powiedz, że mam tablicę [1,2,3,1,2,3]
i chcę usunąć pierwszą instancję (powiedzmy) 2
z tablicy podając [1,3,1,2,3]
. Jaki jest najprostszy sposób?Usuń pierwszą instancję pasującego elementu z tablicy
28
A
Odpowiedz
61
li.delete_at(li.index(n) || li.length)
li[li.length]
jest poza zasięgiem, więc || li.length
obsługuje przypadek, w którym n
nie ma na liście.
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
Jeśli || li.length
jest, aby uniknąć wysyłania nil
do li.delete_at
(co spowodowałoby TypeError), a następnie bardziej czytelny wersja może wyglądać następująco
li.delete_at li.index(42) unless li.index(42).nil?
+6
Prawdopodobnie chcesz zapisać 'li.index (42)' w zmiennej, aby zapobiec dwukrotnemu wyszukiwaniu. Wydajność będzie znacznie lepsza dla dużych tablic. – Kelvin
4
Może to stać się częścią stdlib :
class Array
def delete_first item
delete_at(index(item) || length)
end
end
Powiązane problemy
- 1. Wybierz tylko pierwszą instancję z XPath?
- 2. Usuń elementu z JSON Object
- 3. Jak zastąpić * pierwszą instancję * ciągu w .NET?
- 4. dostać pierwszą niezerową wartość z tablicy PHP
- 5. jquery plugin usuń z elementu
- 6. Usuń zawartość tablicy z innej tablicy
- 7. Datagridview - usuń część przed pierwszą kolumną
- 8. Usuń wiersz z tablicy php
- 9. Java Usuń duplikaty z tablicy?
- 10. Usuń obiekty stdClass z tablicy
- 11. Usuń wszystkie zer z tablicy
- 12. usuń element z tablicy matlab
- 13. Usuń pusty element z tablicy
- 14. usuń elementem ciąg z javascript tablicy
- 15. Usuń pierwszą i ostatnią postać C++
- 16. NumPy suma jednej tablicy na podstawie wartości w innej tablicy dla każdego pasującego elementu w trzeciej tablicy
- 17. Korzystanie ścieżkę ciąg usunąć elementu z tablicy
- 18. Usuń pierwszą i ostatnią literę z ciągu C
- 19. Usuń pierwszy element tablicy VBA
- 20. dostać tylko pierwszą klasę elementu HTML
- 21. Bootstrap TypeAhead: Usuń wymuszony wybór pierwszego elementu
- 22. Usuń classname od elementu z javascript
- 23. XSLT 1.0 Usuń xmlns = "" z elementu
- 24. - usuń obiekt z tablicy za pomocą odwołania do obiektu
- 25. Jak utworzyć instancję elementu XSD typu abstrakcyjnego?
- 26. Znajdź indeks elementu pasującego do predykatu w Clojure?
- 27. Eclipse: Skrót do przejścia do pasującego tagu elementu XML
- 28. Czy wskaźniki dotykowe sscanf, jeśli nie znaleziono pasującego elementu?
- 29. Usuń zduplikowany element z tablicy JavaScript
- 30. Usuń element z tablicy stanów w odpowiedzi
Dziękuję. Biłem się w głowę, próbując wyrazić to elegancko. –
Nie rozumiem '|| li.length' może ktoś proszę wyjaśnić – gates
Każda wartość w ruby może być traktowana jako wartość boolowska, przy czym tylko wartość "false" i "zero" są wartościami "false". Składnia podwójnej rury jest wygodnym skrótem. 'a || b "oznacza" a, chyba że jest zerowe, a następnie b ". – erich2k8