internetul Windows. Android

JQuery Ștergeți un element de matrice prin valoare. Cum se șterge un element specific JavaScript? Utilizarea funcției de ștergere pentru a elimina un element de matrice

schimb

Utilizați.Shift pentru a elimina primul element al matricei.

De exemplu:

Var array \u003d; array.Shift ();

matricea duce la:

De exemplu:

Var array \u003d; array.pop ();

matricea duce la:

Ambele metode returnează un element la distanță;

lipitură

Utilizați.splice () pentru a elimina un număr de elemente din matrice. .splice () ia doi parametri, un indice inițial și un număr opțional de elemente pentru eliminare. Dacă al doilea parametru nu este.splice () șterge toate elementele din indicele inițial până la capătul matricei.

De exemplu:

Var array \u003d; array.splice (1, 2);

frunze matrice cuprinzând:

Return Array.splice () este o nouă matrice care conține articole la distanță. În exemplul de mai sus, restituirea va fi după cum urmează:

Astfel, scăderea celui de-al doilea parametru rupe efectiv matricea în două matrice cu capătul inițial la indexul specificat:

Var array \u003d; array.splice (2);

Frunze matricea care conține și se întoarce.

șterge

Utilizați Ștergere pentru a elimina un element dintr-o matrice fără a schimba lungimea matricei:

Var array \u003d; Consola.log (array.length); // 5 Ștergerea matricei; Consola.log (matrice); // consola.log (array.length); // cinci.

Array.protype.length.

Atribuirea unei matrice de valori de lungime modifică lungimea la o valoare specificată. Dacă o nouă valoare este mai mică decât lungimea matricei, elementele vor fi scoase de la sfârșitul valorii.

Array \u003d; array.Lend \u003d 2; Consola.log (matrice); //

JavaScript. Ștergeți operatorul. Elimină o proprietate dintr-un obiect; Dacă nu mai există referiri la aceeași proprietate, este în cele din urmă eliberată automat.

Sursa pentru acest exemplu interactiv este stocată într-un depozit GitHub. Dacă doriți să contribuiți la proiectul Interactive Exemple, vă rugăm să clonați https://github.com/mdn/interactive-examples și trimiteți-ne o cerere de tragere.

Sintaxă

șterge. expresie

Orice variabilă definită cu var este marcată ca neconfigurabilă. În exemplul următor, salariul este neconfigurabil și nu poate fi șters. În modul non-strict, operația de ștergere va reveni fals.

Funcția angajatului () (șterge salariul; salariu;) angajat ();

Să vedem cum se comportă același cod în modul strict. În loc să întoarceți falsul, declarația ridică o sintaxă.

"Utilizați stricte"; Funcția angajatului () (ștergeți salariul; // sintaxerror var salariu;) // În mod similar, orice acces direct la o funcție // cu șterge va ridica o demofuncție a funcției de sintaxă (// unele cod) ștergerea demofuncției; // Eroare de sintaxă.

Exemple.

// creează numele de proprietate pe domeniul de aplicare global. adminname \u003d "xyz"; // creează proprietatea implementată cu privire la domeniul global. // Din moment ce o folosesc var, acest lucru este marcat ca neconfigurabil. Același lucru este valabil și pentru Let și Const. Var Empcount \u003d 43; Employeedeetails \u003d (Nume: "XYZ", Vârsta: 5, desemnare: "Dezvoltator"); // AdminName este o proprietate a domeniului global. // poate fi ștearsă, deoarece este creată fără VAR, // și, prin urmare, configurabilă. Ștergeți numele de administrare; // Returnează TRUE // Dimpotrivă, EmpTount nu este configurabil // Deoarece Var a fost utilizat. Ștergeți implementarea; // Returns Fals // Ștergere poate fi folosit pentru a elimina proprietățile din obiecte. Ștergeți angajații. // returnează adevărat. // Chiar și atunci când proprietatea nu există, ștergeți returnează "adevărat". Ștergerea angajaților. // Returns TRUE // Ștergerea nu afectează proprietățile statice încorporate. Șterge matematică.pi; // Returns False // Angajații este o proprietate a domeniului global. // Din moment ce a fost definit fără "var", este marcat configurabil. Ștergeți angajații; // returnează funcția TRUE F () (var z \u003d 44; // ștergere nu afectează numele variabilelor locale Ștergeți z; // returnează fals)

Ștergeți și lanțul prototip

În următorii examene, ștergem o proprietate proprie a unui obiect în timp ce o proprietate cu același nume este disponibilă pe lanțul prototip:

Funcție foo () (this.bar \u003d 10;) foo.protype.bar \u003d 42; var foo \u003d nou foo (); // foo.bar este asociat cu proprietatea proprie. Consola.log (foo.bar); // 10 // Ștergeți proprietatea proprie în cadrul obiectului // foo. Ștergeți foo.bar; // Returns TRUE // foo.bar este încă disponibil în lanțul de prototip //. Consola.log (foo.bar); // 42 // Ștergeți proprietatea pe prototip. Ștergeți foo.protype.bar; // Returns TRUE // Proprietatea "Bar" nu mai poate fi // moștenit de la foo, deoarece a fost // șters. Consola.log (foo.bar); // nedefinit.

Ștergerea elementelor de matrice.

Când ștergeți un element de matrice, lungimea matricei nu este afectată. Acest lucru este chiar dacă ștergeți ultimul element al matricei.

Când operatorul de ștergere îndepărtează un element de matrice, elementul nu mai este în matrice. În exemplul următor, copacii sunt eliminați cu Ștergere.

Var copaci \u003d ["Redwood", "Bay", "Cedar", "Oak", "Maple"]; Ștergeți copacii; Dacă (3 în copaci) (// acest lucru nu este executat)

Dacă doriți ca un element de matrice să existe, dar să aibă o valoare nedefinită, utilizați valoarea nedefinită în locul operatorului de ștergere. În exemplul următor, copacii i se atribuie valoarea nedefinită, dar elementul de matrice există încă:

Var copaci \u003d ["Redwood", "Bay", "Cedar", "Oak", "Maple"]; Copaci \u003d nedefinite; dacă (3 în copaci) (// acest lucru este executat)

Dacă în schimb, doriți să eliminați un element de matrice prin schimbarea conținutului matricei, utilizați metoda de îmbinare. În exemplul următor, copacii sunt îndepărtați din matrice complet utilizând îmbinări:

Var copaci \u003d ["Redwood", "Bay", "Cedar", "Oak", "Maple"]; Copaci.splice (3.1); Consola.log (copaci); // ["Redwood", "Bay", "Cedar", "Maple"]

Specificații.

Specificație Stare. cometariu
EcMascript ultimul proiect (ECMA-262)
PROIECT.
ECMAScript 2015 (ediția a 6-a, ECMA-262)
Definiția "operatorului de ștergere" în acea specificație.
Standard
ECMAScript 5.1 (ECMA-262)
Definiția "operatorului de ștergere" în acea specificație.
Standard
Ecmasrcript Prima ediție (ECMA-262)
Definiția "operatorului de ștergere" în acea specificație.
Standard Definiție inițială. Implementate în JavaScript 1.2.

Compatibilitatea browserului

Tabelul de compatibilitate de pe această pagină este generat din datele structurate. Dacă doriți să contribuiți la date, vă rugăm să consultați https://github.com/mdn/browser-compat-data și trimiteți-ne o cerere de tragere.

Actualizați datele de compatibilitate pe GitHub

Desktop.MobilServer
Crom.Margine.Firefox.Internet Explorer.Operă.Safari.Android WebView.Chrome pentru Android.Firefox pentru Android.Opera pentru Android.Safari pe iOS.Samsung Internet.Nod.js.
șterge.Chrome suport complet 1Suport complet de margine 12Firefox suport complet 1Adică suport complet 4Opera suport complet daSafari suport complet daWebView Android suport complet 1Chrome Android suport complet 18Firefox Android suport complet 4Opera Android suport complet daSafari iOS suport complet daSamsung Internet Android suport complet 1.0nODEJS suport complet da

Legendă.

Suport complet Suport complet

Note cross-browser

Deși ECMAScript face o ordine de iterație a obiectelor dependente de implementare, poate să apară că toate browserele majore acceptă o comandă de iterație bazată pe cea mai veche proprietate adăugată (cel puțin pentru proprietăți nu pe prototip). Cu toate acestea, în cazul Internet Explorer, atunci când se utilizează ștergerea pe proprietate, unele rezultate confuze de comportament, împiedicând alt browser să utilizeze obiecte simple, cum ar fi literale de obiecte ca margini asociative ordonate. În Explorer, în timp ce proprietatea valoare Este într-adevăr setat la nedefinit, dacă unul ulterior adaugă o proprietate va fi iterat în el vechi. Poziția - nu la sfârșitul secvenței de iterație, așa cum se poate aștepta după ce a șters proprietatea și apoi a adăugat-o înapoi.

Am descris doar o parte din metodele de lucru cu matrice.

Aici vom vorbi despre adăugarea, eliminarea elementelor matricei. La întoarcerea și sortarea matricei, precum și despre tăierea, înlocuirea și combinarea matricei.

Adăugând elemente la o matrice.

Puteți utiliza proprietatea de lungime pentru a adăuga elemente noi într-o matrice:

Var MyArray \u003d ["Apple", "Microsoft", "Google", "Facebook"]; MyArray \u003d "Yahoo!"; Consola.log (myarray); // [Apple, "Microsoft", "Google", "Facebook", "Yahoo!"]

Va funcționa, pentru că Elementele matricei sunt numerotate de la zero și lungime. pe unitate mai mult. Lungime. Întotdeauna echivalent index + 1.Deci este foarte ușor să adăugați un element nou până la capătul matricei. Ciudat, dar puteți adăuga un element la o poziție mult mai mare decât lungimea matricei în sine:

Var Myarray \u003d ["Jimi Hendrix", "Eric Clapton", "Pagina Jimmy", "Keith Richards"]; MyArray \u003d "Lindsey Buckingham"; Consola.log (myarray); // ["Jimi Hendrix", "Eric Clapton", "Pagina Jimmy", "Keith Richards", nedefinit × 95, "Lindsey Buckingham"] consola.log (myarray.Length); // 100.

După cum se arată în comentarii, 95 de sloturi goale și elementul "Lindsey Buckingham" vor fi adăugate la sfârșitul matricei. După aceea, vom obține o lungime de 100. O altă modalitate de a adăuga un element nou la o matrice este de a utiliza metoda apăsați ():

Var Myarray \u003d ["Paul McCartney", "John Lennon", "George Harrison"]; myarray.push ("Ringo Starr", "George Martin"); Consola.log (myarray); // ["Paul McCartney", "John Lennon", "George Harrison", "Ringo Starr", "George Martin"]

Metodă apăsați () Întotdeauna returnează o nouă lungime a matricei (în cazul nostru 5). Puteți adăuga un element utilizând splice ():

Var Myarray \u003d ["Acorn", "fag", "Mongongo", "Macadamia"]; myarray.splice (2, 0, "cashew"); // adaugă "cashew" în Consola Index 2.log (MyArray); // ["acorn", "fag", "cashew", "Mongongo", "macadamia"]

Atunci când al doilea argument 0, aceasta înseamnă că niciun element nu va fi eliminat și, prin urmare, orice argumente ulterioare vor fi adăugate la matrice la poziția specificată în primul argument.

Îndepărtarea elementelor din matrice

Scoateți elementul este puțin mai complicat decât să-l adăugați. Pentru a elimina un element de la capătul matricei, puteți utiliza pop ():

Var Myarray \u003d ["7-Up", "Sprite", "Ginger Ale", "limonadă"]; myarray.pop (); Consola.log (myarray); // ["7-up", "sprite", "ghimbir ale"]

Metodă pop () Îndepărtează întotdeauna ultimul element din matrice și îl întoarce.

De asemenea, puteți utiliza splice () metodă:

Var Myarray \u003d ["Cassava", "Nutmeg", "Lupină", \u200b\u200b"Rhubarb"]; myarray.splice (2, 1); // ștergeți un element cu un index 2 console.log (MyArray); // ["Cassava", "Nutmeg", "Rubarb"]

Spre deosebire de metoda splice (), Care este folosit pentru a adăuga elemente, aici al doilea argument este 1, care spune că dorim să eliminăm un element cu un index 2 (sau al treilea cont). În acest caz, elementul "lupin" pensionat.

Puteți șterge un element de matrice utilizând operatorul Șterge:

Var Myarray \u003d ["Byte Bandit", "Eliza", "Jeefo", "Michelangelo"]; Consola.log (myarray.length); // 4 Ștergeți MyArray; // șterge consola eliza.log (myarray.length); // 4 console.log (myarray); // ["Byte Bandit", nedefinit × 1, "Jeefo", "Michelangelo"]

Prima notă importantă: șterge () Nu modifică lungimea matricei după îndepărtarea elementului (chiar dacă acesta a fost ultimul element din matrice). Al doilea: șterge () Modifică valoarea elementului eliminat pe nedefinit, astfel încât atunci când contactați myarray \u003d nedefinit..

O modalitate bună de a elimina un element din matrice - utilizați Array.ReMove John Risemove. Sub un exemplu de utilizare, luată din pagina sa:

// Array Eliminare - de John Răsig (MIT Licențiat) Array.protype.remove \u003d Funcție (de la, la) (VAR REST \u003d this.Slice ((la || de la) + 1 || thengn lungime); acest lucru.Langthth \u003d De la.< 0 ? this.length + from: from; return this.push.apply(this, rest); }; // Удаление 2 элемента из массива array.remove(1); // Удаление 2-ого элемента с конца массива array.remove(-2); // Удаление второго и третьего элемента array.remove(1,2); // Удаление последнего и предпоследнего элемента array.remove(-2,-1);

Este posibil să doriți să vedeți decizia prin Patel Viral, una dintre funcțiile din Undercore.Js sau Jquery GREP ().

Avansat, B. JavaScript. Există o metodă schimb () Care elimină primul element din matrice și returnează valoarea acestuia. Să vedem codul:

Var Myarray \u003d ["Matt Kramer", "Jason Bieler", "Tom Defile", "Phil Verone"]; Consola.log (myarray.length); // 4 var tunditem \u003d myarray.Shift (); Consola.log (primultitem); // mat kramer consola.log (myarray.length); // 3 console.log (myarray); // ["Jason Bieler", "Tom Defile", "Phil varone"]

Folosind metoda schimb () Am șters elementul, dar am salvat valoarea sa în variabila noastră de primire. Lungimea matricei sa schimbat de la 4 la 3.

Această metodă poate fi utilă împreună cu metoda. apăsați (). Folosindu-le împreună, putem construi în mod eficient o coadă de elemente din matrice. Reținm lungimea matricei prin îndepărtarea elementului de la început și adăugarea unui nou până la capăt.

Dimpotrivă, putem folosi metoda dezactivat () Pentru a adăuga un element la începutul matricei:

Var myarray \u003d ["apito", "castanti", "maraca"]; Consola.log (myarray.length); // 3 myarray.unshift ("bar chime", "tan-tan"); Consola.log (myarray.length); // 5 console.log (myarray); // ["Bar Chime", "Tan-Tan", "apito", "castanii", "maraca"]

Folosind metoda dezactivat () cu o metodă pop () Puteți crea o coadă în direcția opusă adăugând elemente la început și scoaterea de la capătul matricei.

Rotirea și sortarea elementelor matricei.

Pentru a transforma elementele din matrice, putem folosi reverse ():

Var myarray \u003d ["numărătoarea inversă", "final", "the"]; Consola.log (myarray); // ["numărătoarea inversă", "finală", "the"] myarray \u003d myarray.Rerverse (); Consola.log (myarray); // ["Numărătoarea finală"]

Sortați elementele matricei în ordine alfabetică poate utilizând metoda fel ():

Var ryarray \u003d ["xilofoane", "zebraras", "juggernauts", "avocados"]; Consola.log (myarray); // ["xilofoane", "zebre", "juggernauts", "avocados"] myarray \u003d myarray.sort (); Consola.log (myarray); // ["avocados", "juggernauts", "xilofoane", "zebras"]

Dar nu va funcționa cu numere.

Var myarray \u003d; Consola.log (myarray); // myarray \u003d myarray.sort (); Consola.log (myarray); //

Dacă doriți să sortați numere, puteți utiliza următorul cod:

Funcția de comparațienubiri (a, b) (returnarea a-b;) var myarray \u003d; Consola.log (myarray); // myarray \u003d myarray.sort (comparante); Consola.log (myarray); //

După cum se arată mai sus, folosind o simplă funcție introdusă în fel () Un numere care conțin matrice vor fi sortate corect.

Combinarea matricelor.

Putem combina 2 sau mai multe matrice și putem obține o matrice care conține elementele matricei conectate. Pentru a face acest lucru, utilizați metoda concat ():

Var Myarray \u003d ["Jay Ferguson", "Andrew Scott"]; Vary myarray2 \u003d ["Chris Murphy", "Patrick Pentland"]; Var MynewArray \u003d Ryarray.concat (MyAray2); Consola.log (mynewarary); // [Jay Ferguson "," Andrew Scott "," Chris Murphy "," Patrick Pentland "]

Var Myarray \u003d ["Jay Ferguson", "Andrew Scott"]; Var MynewArray \u003d Ryarray.concat ("Chris Murphy", "Patrick Pentland"); Consola.log (mynewarary); // [Jay Ferguson "," Andrew Scott "," Chris Murphy "," Patrick Pentland "]

Separarea matricei.

Putem crea o nouă matrice care conține 1 sau mai multe elemente dintr-o matrice existentă utilizând o funcție felie ():

Var MyArray \u003d ["vocal", "bass", "chitară", "tobe", "mere", "portocale"]; Var MynewArray \u003d MyArray.Slice (4); Consola.log (mynewarary); // ["mere", "portocale"]

Metodă felie () Ia 1 sau 2 argumente. Dacă un argument este transferat (index), atunci noua matrice este creată din toate elementele vechiului, pornind de la acest indice. Dacă există 2 argumente, noua matrice este creată din elemente, pornind de la primul argument la elementul cu indicele transmis în al doilea parametru, fără a include pe acesta din urmă. Pentru a fi mai clară, să vedem codul de mai jos:

Var MyArray \u003d ["vocal", "bass", "chitară", "tobe", "mere", "portocale"]; Var MynewArray \u003d MyArray.Slice (0, 4); Consola.log (mynewarary); // ["vocal", "bass", "chitară", "tobe"]

Înlocuirea elementelor din matrice.

Folosim splice () Pentru a elimina elementele din matrice, dar putem înlocui, de asemenea, elementul din matrice pentru articole noi:

Var Myarray \u003d ["Râurile Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myarray.splice (3, 1, "scott shriner"); // înlocuiți 1 element cu un index 3 console.log (myarray); // ["Râuri Cuomo", "Patrick Wilson", "Brian Bell", "Scott Shrer"]

Metodă splice () Întotdeauna returnați o matrice care conține elemente care au fost șterse. În linia 2 va fi returnată 1 element "Brian Bell".

Concluzie

Aceste articole au descris cum să lucreze cu matrice în JavaScript. Unele elemente suplimentare pot fi vizualizate pe MDN, pe care nu le-am inclus în acest post. Lucrează numai în IE9 +, astfel încât acestea pot fi inutile.

Au ceva de adăugat? Sau știți orice bibliotecă interesantă care va ajuta la gestionarea matricelor? Comenteaza te rog!



Cum de a elimina un element dintr-o valoare de matrice? (douăzeci)

// a fost editat de Marcoci pentru sfaturi

incearca asta:

Funcția dorită (element, arr) (pentru (VAR I \u003d 0; I

sper că acest lucru vă va ajuta

Există o modalitate de a elimina un element din matricea JavaScript?

Având în vedere matricea:

VAR ARY \u003d ["Trei", "șapte", "unsprezece"];

Aș vrea să fac ceva de genul:

Removeitemm ("șapte", ary);

Am văzut splice (), dar șterge doar numărul de poziție, în timp ce am nevoie de ceva pentru a elimina elementul prin valoarea sa.

Permiteți comentariiWithoutdeledararey \u003d comentariiArray.filter ((comentariu) \u003d\u003e! (Comment.id \u003d\u003d\u003d comentariu));

Aici este versiunea în care se utilizează funcția de jquery INARIRAY:

VAR index \u003d $ .inarray (element, matrice); dacă (index! \u003d -1) (array.splice (index, 1);)

Puteți obține această utilizare a funcției Lodash. _.elimina.

var array \u003d ["trei", "șapte", "unsprezece"]; Var Evens \u003d _.Remove (matrice, funcție (e) (retur e! \u003d\u003d "șapte";)); Consola.log (EVENS);

Const _ \u003d necesită ("Lodash"); _.without (, 2); //-\u003e

Într-adevăr, nu înțeleg de ce este imposibil să rezolve cu

Arr \u003d arr.filter (valoare \u003d\u003e valoare! \u003d\u003d "șapte");

Sau poate doriți să utilizați vanilie js

Arr \u003d arr.filter (valoarea de returnare! \u003d\u003d "șapte"));

O altă variantă:

Dacă (array.protype.removearr) (array.protype.removearr \u003d Funcție (arr) (dacă (! Array.isarray (arr)) arr \u003d; // hai să fie drăguț cu oamenii care pune o valoare non-array Aici .. care ar putea fi eu! Var \u003d acest lucru; dacă (arr.length) (var i \u003d 0; în timp ce (i -1) (aceasplice (i, 1);) altceva i ++; )) Returnați acest lucru; ))

Acest index () în interiorul ciclului este din nou, dar sub ipoteza că o matrice pentru îndepărtare este mică în raport cu matricea care trebuie curățată; Fiecare îndepărtare reduce ciclul de timp.

Acest lucru vă va permite să faceți următoarele:

VAR ARY \u003d ["Trei", "șapte", "unsprezece"]; Var arywithoutseven \u003d ary.filter (valoarea de returnare! \u003d "Șapte")); Consola.log (aryithoutseven); // întoarce ["trei", "unsprezece"]

A fost remarcat, de asemenea, în acest subiect în altă parte: https: //.com/a/293492

Nu utilizați opțiunea cu Ștergere - face o gaură în matrice, deoarece nu reiesește elementele după elementul la distanță.

\u003e Array.protype.remove \u003d Funcție (v) (... ștergeți acest ...); \u003e Var myarray \u003d ["3", "24", "55", "2"]; nedefinit\u003e myarray.remove ("55"); nedefinit\u003e myarray ["3", "24", "2"]

O căptușeală o va face

VAR ARY \u003d ["Trei", "șapte", "unsprezece"]; // eliminați elementul "șapte" de la Array Var filterary \u003d ary.filter (Funcție (E) (retur e! \u003d\u003d "șapte")) // \u003d\u003e "trei", "unsprezece"] // în ECMA6 (săgeată Funcție sintaxă): Var filterary \u003d ary.filter (E \u003d\u003e E! \u003d\u003d "Șapte")

Aceasta utilizează funcția de filtrare în JS. Este susținut în IE9 și mai mare.

filtrul () Cauzează o singură caracteristică a apelului inversă o dată pentru fiecare element din matrice și creează o nouă gamă de toate valorile pentru care apelul returnează o valoare care duce la cea adevărată. Callback se numește numai pentru indicii de matrice, care sunt valori atribuite; Nu este chemat pentru indexuri care au fost șterse sau care nu au fost niciodată atribuite valorilor. Un element de matrice care nu transmit un test de apel invers sunt pur și simplu sărite și nu sunt incluse în noua matrice.

Astfel, în cea mai mare parte, acest lucru este același cu oricine altcineva pentru (key var în ARY) (...) soluții, cu excepția faptului că în cazul în care este susținut ca IE6.

În principiu, filtrul este o metodă de confort care arată mult mai bine (și este lanțul), spre deosebire de designerul (A afaik).

Verifica acest lucru:

Pentru (var I în matrice) (dacă (matrice [i] \u003d\u003d "șapte") (Array.splice (I, 1); Break;))

Și în funcție:

Funcția de îndepărtare (matrice, element) (dacă (matrice [i] \u003d\u003d element) (Array.splice (I, 1); Break,)))))) (matrice, "șapte");

Scoaterea tuturor elementelor potrivite din matrice (și nu doar pentru prima dată, deoarece se pare că este cel mai frecvent răspuns aici):

În timp ce ($ .inarray (articol, matrice)\u003e -1) (Array.splice ($. InaRray (articol, matrice), 1);)

Am folosit jquery pentru munca grea, dar ai înțeles dacă vrei să mergi la limba ta maternă.

Trucul este de a trece printr-o matrice de la început înainte de începere, astfel încât să nu strici indexurile atunci când scoateți elementele.

Var deleteme \u003d funcția (arr, eu) (var i \u003d arr.length; în timp ce (i-) dacă (arr [i] \u003d\u003d\u003d me) arr.splice (i, 1);) var arr \u003d ["portocaliu "," Roșu "," negru "," portocaliu "," alb "," portocaliu "]; DELETEME (ARR, "ORANGE");

aRR acum ["roșu", "negru", "alb"]

Funcție Cleanarrayofspecificterms (matrice, nedoriendermarray) ($ .ech (nedoriteMarray, funcție (index, valoare); IFEX (index\u003e -1) (Array.splice (index, 1);))); matrice de întoarcere;)

Pentru a utiliza, urmați acești pași:

Var NotinClude \u003d ["Nu", "nu", "primul", "ultimul", "anterior", "următor", "câini", "pisici"]; Var Splitterms \u003d ["apel", "jurnal", "câini", "pisici", "subiect", "schimbare", "prețul"]; CleanarrayofSpecificterms (Splitterms, NotinClude)

Am încercat să folosesc metoda de funcționare de la JBaron de mai sus, dar am aflat că trebuie să salvez matricea originală fără modificări pentru a fi utilizate mai târziu și de a crea o matrice nouă după cum urmează:

Var nowarray \u003d referință;

Funcția NewarRremoveiem (matrice, element, Newarray) (pentru (VAR I \u003d 0; I< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

Apoi o folosesc așa:

Var vselid \u003d record.get ("navă"); Var Altevessels \u003d noua matrice (); Newarrremoveiem (navă, navă, altevessesseluri);

Acum, navartorul rămâne intact și de fiecare dată când efectuez codul de mai sus, matricea cealaltăvesele include totul, cu excepția ultimului element Caid.

indexarea este o opțiune, dar implementarea acesteia caută în principal întreaga matrice pentru sens, astfel încât timpul de execuție crește cu dimensiunea matricei. (Deci, în fiecare browser, cred că am verificat doar Firefox).

Nu am un IE6 pentru verificare, dar aș numi o sumă licitată în siguranță că puteți verifica cel puțin un milion de elemente ale matricei pe secundă, practic, practic pe orice mașină client. Dacă [dimensiunea matricei] * [interogările de căutare pe secundă] pot crește mai mult de un milion, ar trebui să luați în considerare o altă implementare.

Practic, puteți utiliza un obiect pentru a crea un index pentru matrice, de exemplu:

Var index \u003d ("trei": 0, "șapte": 1, "unsprezece": 2);

Orice mediu JavaScript normal va crea un indice de căutare pentru astfel de obiecte, astfel încât să puteți traduce rapid cheia pentru valoarea, indiferent de cât de proprietăți au un obiect.

Aceasta este doar o metodă de bază, în funcție de nevoile dvs., puteți combina mai multe obiecte și / sau arrays pentru a face aceleași date accesibile rapid pentru a căuta diferite proprietăți. Dacă specificați nevoile dvs. specifice, pot oferi o structură de date mai specifică.

// această funcție permite eliminarea uniformă de la ARRAY VAR removeFromARR \u003d Funcție (arr.length, nou_arr \u003d, sort_fn \u003d funcția (A, B) (returnarea a-b;); pentru (i \u003d 0; i< len; i += 1) { if (typeof elem === "object" && typeof arr[i] === "object") { if (arr[i].toString() === elem.toString()) { continue; } else { if (arr[i].sort(sort_fn).toString() === elem.sort(sort_fn).toString()) { continue; } } } if (arr[i] !== elem) { new_arr.push(arr[i]); } } return new_arr; }

Exemplu de utilizare

Var arr \u003d, "abc", 1, "1", 1]; Removefromarr (ARR, 1); // ["2", "ABC", "1"] var arr \u003d [, 2, "A" ,,]; Removefromarr (arr,); //]

Fie arr \u003d; Consola.log (arr); // rezultatul Let Index \u003d Arr.Indexof (30); dacă (index\u003e -1) (arr.splice (index, 1);) consolă.log (ARR); // rezultat

Var index \u003d array.indexof ("element"); dacă (Index! \u003d - 1) (Array.splice (index, 1);)