matrice JavaScript vă permite să grup de valori și repeta peste ei. Puteți adăuga și elimina elemente de matrice în moduri diferite. Din păcate, nu există o matrice simplă.eliminați metoda.deci, cum ștergeți un element dintr-o matrice JavaScript?,
în loc de o metodă de ștergere, matricea JavaScript are o varietate de moduri în care puteți curăța valorile matrice.
puteți elimina elemente de la sfârșitul unui tablou folosind pop, de la început folosind shift sau de la mijloc folosind splice. JavaScript Array filter metoda pentru a crea un nou tablou cu elementele dorite, un mod mai avansat de a elimina elementele nedorite.,licitly Elimina Elementele de Matrice Folosind Operatorul Delete
Există diferite metode și tehnici pe care le puteți utiliza pentru a elimina elemente din matrice JavaScript:
- pop – Indeparteaza de la Sfârșitul de o Serie
- shift – Elimină de la început de o Serie
- splice – indeparteaza de la un anumit index Matrice
- filter – vă permite să programatic elimina elemente dintr-o Matrice
Veți învăța, de asemenea, unele alte moduri în care puteți elimina elemente dintr-o matrice care ar putea să nu fie atât de evident, ca cu LoDash.,
eliminarea elementelor de la sfârșitul unei matrice JavaScript
elementele matrice JavaScript pot fi eliminate de la sfârșitul unei matrice prin setarea proprietății lungime la o valoare mai mică decât valoarea curentă. Orice element al cărui indice este mai mare sau egal cu noua lungime va fi eliminat.
var ar = ; ar.length = 4; // set length to remove elements console.log( ar ); //
metoda pop elimină ultimul element al matricei, returnează acel element și actualizează proprietatea lungime. Metoda pop modifică matricea pe care este invocată, acest lucru înseamnă, spre deosebire de utilizarea șterge ultimul element este eliminat complet și lungimea matrice redusă.,
var ar = ; ar.pop(); // returns 6 console.log( ar ); //
eliminarea elementelor de la începutul unei matrice JavaScript
cum eliminați primul element dintr-o matrice JavaScript?
metoda shift funcționează la fel ca metoda pop, cu excepția faptului că elimină primul element dintr-o matrice JavaScript în loc de ultima.
nu există parametri, deoarece metoda shift a eliminat doar primul element de matrice. Când elementul este îndepărtat, elementele rămase sunt deplasate în jos.,
var ar = ; ar.shift(); // returns "zero" console.log( ar ); //
metoda shift returnează elementul care a fost eliminat, actualizează indexurile elementelor rămase și actualizează proprietatea length. Modifică matricea pe care este invocată.
dacă nu există elemente sau lungimea matricei este 0, metoda se întoarce nedefinită.
utilizarea Splice pentru a elimina elementele de matrice în JavaScript
metoda splice poate fi utilizată pentru a adăuga sau elimina elemente dintr-o matrice. Primul argument specifică locația la care să înceapă adăugarea sau eliminarea elementelor. Al doilea argument specifică numărul de elemente de eliminat., Al treilea și următoarele argumente sunt opționale; ele specifică elemente care urmează să fie adăugate la matrice.
aici folosim metoda splice pentru a elimina două elemente pornind de la poziția trei (index bazat pe zero):
var arr = ; var removed = arr.splice(2,2);
o matrice care conține elementele eliminate este returnată prin metoda splice. Puteți vedea că matricea eliminată conține și matricea originală conține valorile rămase.metoda de îmbinare poate fi de asemenea utilizată pentru a elimina o serie de elemente dintr-o matrice.,
var list = ; list.splice(0, 2); // Starting at index position 0, remove two elements and retains .
eliminarea elementelor de matrice după valoare folosind Splice
dacă știți valoarea pe care doriți să o eliminați dintr-o matrice, puteți utiliza metoda splice. Mai întâi trebuie să identificați indexul elementului țintă. Apoi utilizați indexul ca element de pornire și eliminați doar un element.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); } } //=>
acesta este un exemplu simplu în care elementele sunt întregi. Dacă aveți o serie de obiecte ar avea nevoie de o rutină mai sofisticate.
Acest lucru funcționează dacă doriți să eliminați doar un singur element., Dacă doriți să eliminați mai multe elemente care corespund criteriilor dvs., există o eroare.
pe măsură ce elementele sunt eliminate din matrice, indicele continuă să crească și următorul element după ce valoarea potrivită este omisă.
soluția simplă este de a modifica exemplul de mai sus pentru a decreta variabila index, astfel încât să nu sări peste următorul element din matrice.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); i--; } } //=>
în exemplul modificat am adăugat 2 valori suplimentare 5 la matrice. Am adăugat ,de asemenea, „i -;” după apelul lipitură.acum, când executați bucla se va elimina fiecare element de potrivire.,
datorită Kristian Sletten pentru subliniind problema cu bucla sărind peste următorul element.
folosind metoda de filtrare matrice pentru a elimina elementele de valoare
spre deosebire de metoda lipitură, filtru creează un nou tablou. filtru () nu mută matricea pe care este numit, dar returnează o nouă matrice.
filter() are un singur parametru, o metodă de apel invers. Apelul invers este declanșat ca metoda de filtrare iterează prin elementele de matrice. Acesta va trece trei valori la apel invers: valoarea curentă sau elementul, indicele matrice curent și tabloul complet.,
metoda de apel invers ar trebui să se întoarcă fie adevărat sau fals. Este responsabilitatea dvs. să testați valoarea (elementul) pentru a vedea dacă îndeplinește criteriile dvs. Dacă o face, puteți reveni adevărat. Elementele care returnează true sunt adăugate la noua matrice filtrată.
var array = ; var filtered = array.filter(function(value, index, arr){ return value > 5; }); //filtered => //array =>
ar trebui să rețineți un nou tablou care conține valori de potrivire este returnat. Matricea originală este lăsată neatinsă. Mi se pare util pentru că de multe ori vreau să păstreze o sursă de date originale, dar prelua subseturi bazate pe diferite seturi logice.,
metoda Lodash array Remove
uneori bibliotecile de utilități sunt cea mai bună modalitate de a rezolva probleme mai complexe. Lodash oferă un set bogat de metode de manipulare matrice, unul fiind elimina.metoda lodash remove funcționează la fel ca metoda filtrului de matrice, dar într-un fel invers. Nu salvează valorile matricei originale, ci elimină elementele potrivite. Returnează elementele de potrivire ca o nouă matrice.
var array = ;var evens = _.remove(array, function(n) { return n % 2 === 0;});console.log(array);// => console.log(evens);// =>
efectuarea unei metode de eliminare
așa cum am menționat anterior, nu există o matrice nativă.eliminați metoda., La Lodash metodă de a rezolva această problemă, dar este posibil să nu doriți să utilizați Lodash. Aceasta nu înseamnă că nu puteți crea o metodă de utilitate. John Resig ne-a dat un model de urmat, cu toate acestea el a extins prototip matrice, care este o idee proastă.
în schimb am creat o metodă de utilitate remove Array care poate fi adăugată la o bibliotecă helper sau utilitate. Ca și metoda lodash remove, primul parametru este matricea țintă. Acesta utilizează matrice.filtru pentru a returna elemente care nu se potrivesc cu o valoare.
această metodă este simplă, presupune valori simple precum numere sau șiruri de caractere., Puteți modifica această metodă pentru a utiliza o metodă customcomparison, dar cred că ar fi mai ușor să utilizați direct metoda de filtrare.
eliminați în mod explicit elementele de matrice folosind operatorul de ștergere
puteți elimina elemente de matrice specifice folosind operatorul de ștergere:
var ar = ; delete ar; // delete element with index 4 console.log( ar ); // alert( ar ); // 1,2,3,4,,6
utilizarea operatorului de ștergere nu afectează proprietatea lungimii. Nici nu afectează indicii elementelor ulterioare. Matricea devine rară, ceea ce este un mod fantezist de a spune că elementul șters nu este eliminat, ci devine nedefinit. Comparați folosind delete cu metoda splice descrisă mai jos.,operatorul de ștergere este proiectat pentru a elimina proprietățile din obiectele JavaScript, care sunt obiecte.
motivul pentru care elementul nu este de fapt eliminat din matrice este operatorul de ștergere este mai mult despre eliberarea memoriei decât ștergerea unui element. Memoria este eliberată atunci când nu mai există referințe la valoare.
ștergeți sau resetați o matrice JavaScript
Ce se întâmplă dacă doriți să goliți o întreagă matrice și să aruncați toate elementele sale?există câteva tehnici pe care le puteți utiliza pentru a crea o matrice goală sau nouă.,
tehnica cea mai simplă și cea mai rapidă este să setați o variabilă array la o matrice goală:
var ar = ;//do stuffar = ;//a new, empty array!
problema pe care o poate crea este atunci când aveți referințe la variabilă. Referințele la această variabilă nu se vor schimba, ele vor păstra în continuare valorile matricei originale. Aceasta, desigur, poate crea un bug🐛.
acesta este un exemplu simplificat al acestui scenariu:
var arr1 = ;var arr2 = arr1; // Reference arr1 by another variable arr1 = ; console.log(arr2); // Output
un truc simplu pentru a șterge o matrice este de a seta proprietatea lungime la 0.,
var ar = ;console.log(ar); // Output ar.length = 0;console.log(ar); // Output
o altă tehnică, un fel de nefiresc, este de a utiliza metoda lipitură, care trece lungimea matrice ca al 2-lea parametru. Aceasta va returna o copie a elementelor originale, care pot fi utile pentru scenariul dvs.
var ar = ;console.log(ar); // Output ar.splice(0, ar.length);console.log(ar); // Output
ultimele două tehnici nu creează o matrice nouă, ci schimbă elementele matricei. Aceasta înseamnă că referințele ar trebui să se actualizeze și ele.
există un alt mod, folosind o buclă de timp. Mi se pare puțin ciudat, dar în același timp arată fantezist, așa că poate impresiona niște prieteni!,
var ar = ;console.log(ar); // Output while (ar.length) { ar.pop(); }console.log(ar); // Output
nu este un mod în care aș merge despre ștergerea unei matrice JavaScript, dar funcționează și este ușor de citit. Unele teste de performanță au arătat, de asemenea, că aceasta este cea mai rapidă tehnică, deci poate că este mai bună decât am crezut inițial!
rezumat
eliminarea elementelor de matrice JavaScript este importantă pentru gestionarea datelor. Nu există o singură metodă de „eliminare” disponibilă, dar există diferite metode și tehnici pe care le puteți utiliza pentru a curăța elementele de matrice nedorite.acest articol a revizuit aceste metode și modul în care acestea pot fi utilizate., De asemenea, ați văzut cum să creați o metodă de ajutor care face eliminarea elementelor dintr-o matrice un pic mai ușoară și mai consistentă.
Vă mulțumim pentru Rob Sherwood pentru subliniind unele greșeli sintactice!