Mai mult
Cum pot șterge un element dintr-o matrice de valoare
Am o serie de elemente în Ruby
[2,4,6,3,8]
Am nevoie pentru a elimina elementele cu valoarea 3
de exemplu
Cum fac asta?
327
14
Cred că m-am'am dat seama:
Împrumut de la Travis în comentarii, aceasta este un răspuns mai bun:
Am modificat raspunsul lui văzând că 3 a fost cel de-al treilea element în exemplu de matrice. Acest lucru ar putea duce la o oarecare confuzie pentru cei care don't seama că 3 este în poziția 2 în matrice.
O altă opțiune:
care rezultate în
Am'm nu sunt sigur dacă cineva a afirmat acest lucru, dar Array.delete() și -= valoarea va șterge fiecare instanță de valoare transmisă către în Matrice. În scopul de a șterge primul exemplu de element particular ai putea face ceva de genul
Acolo ar putea fi un mod mai simplu. Am'nu spun acest lucru este cel mai practica, dar este ceva care ar trebui să fie recunoscute.
Presupunând că doriți să ștergeți 3 de valoare în mai multe locuri într-o matrice, Cred că ruby mod de a face această sarcină va fi de a utiliza delete_if metoda:
Puteți folosi, de asemenea, delete_if în eliminarea elementelor în scenariul de 'matrice de matrice'.
Sper că acest lucru rezolvă interogare
Îmi place
-=[4]
de drum menționat în alte răspunsuri pentru a șterge elemente a căror valoare este de 4.Dar nu este în acest fel:
menționat undeva în "Bază Operațiuni de Matrice", după ce se menționează pe "harta" funcția.
Puteți rula pur și simplu:
O
.delete_at(3)
3
aici fiind poziția.Iată câteva repere:
Și din nou, cu o mai mare matrice care conține o mulțime de duplicate:
Și chiar mai mare, cu mai multe dubluri:
Am îmbunătățit Niels's soluție
Acum puteți folosi
Puteți, de asemenea, maimuță patch-uri. N-am înțeles niciodată de ce Ruby are o
afară
metodaHash
dar nu pentru "Matrice":Acum puteți face:
Sau:
Deci, atunci când aveți mai multe apariții de 3 și vrei doar pentru a șterge prima apariție a 3, puteți face pur și simplu ceva ca mai jos.
Dacă doriți, de asemenea, pentru a face acest lucru operațiunea de ștergere chainable, astfel încât să puteți șterge un element și țineți pe înlănțuirea operațiilor pe matrice rezultat, utilizați "robinet":
Non-distructive de ștergere de prima apariție: