Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • Matrice multidimensionale în exemple de javascript. Reordonarea elementelor matricei în ordine inversă - inversă

Matrice multidimensionale în exemple de javascript. Reordonarea elementelor matricei în ordine inversă - inversă

Matricele sunt unul dintre cele mai frecvent utilizate tipuri de variabile care vă permit să stocați multe valori consecutive într-un „un singur loc”. Cu toate acestea, când vine vorba de JavaScript, sunt multe de renunțat.

În acest articol, vom arunca o privire la trei tehnici puțin cunoscute pe care le puteți aplica atunci când lucrați cu matrice.

1. Adăugarea proprietăților personalizate la matrice

Dacă utilizați căutarea pentru a găsi definiția unei matrice în JavaScript, majoritatea surselor vor pretinde că un anumit tip de valoare variabilă este reprezentat ca un obiect.

În general, multe lucruri pe care le întâlnim în JavaScript sunt obiecte. Va fi corect să rețineți că limbajul conține și tipuri de date „primitive”, dar valorile lor sunt cumva folosite în proprietățile din interiorul obiectelor.

2. Acces la elementele matricei dintr-o buclă

Deoarece indicii de matrice pot lua numai valori pozitive, originea începe de la zero. Ulterior, putem folosi acest index pentru a accesa elementul matrice la această iterație a buclei.

ECMAScript6 a introdus o modalitate de a bucla printr-o matrice fără a utiliza indici și printr-un nou for... de buclă.

Bucla for... of este proiectată să itereze peste elementele unui tablou fără a afecta indexul elementului.

Var ary = ["portocale", "măr", "litchi"]; for (let item of ary) (console.log (item);) // „orange”, „apple”, „lychee” Pentru comparație: afișarea indicilor articolelor într-o buclă for. var ary = ["portocale", "măr", "litchi"]; pentru (var item = 0; item< ary.length; item++){ console.log(item); } // 0, 1, 2

3. Numărul de elemente nu este dimensiunea matricei

Când vorbim despre dimensiunea unui tablou, de obicei ne gândim că ne referim la numărul de elemente stocate în ea. De fapt, acest lucru nu este în întregime adevărat - proprietatea lungime este calculată în funcție de indicele maxim al elementului.

Proprietatea lungimii este foarte ambiguă. Pentru a vă convinge de acest lucru, uitați-vă la următoarele manipulări:

Var ary =; ary.lungime = 3; console.log (arică.lungime); // 3 ary = "abcd"; console.log (arică.lungime); // 6

În ultimul exemplu, a fost suficient să puneți elementul în poziția a cincea, drept urmare lungimea matricei a devenit 6. Dacă credeți că indici de la 0 la 4 vor fi creați automat, atunci veți greși. Acest lucru poate fi verificat folosind operatorul in.

Var ary =; ary.lungime = 3; console.log (arică.lungime); // 3 ary = "abcd"; console.log (arică.lungime); // 6 console.log (0 în ary); // fals

În acest caz, ar fi corect să numiți matricea „sparse”.

De asemenea, putem manipula proprietatea lungime pentru a tăia matricele. Exemplul de mai jos demonstrează „pierderea” elementului la indicele 5 prin scăderea valorii proprietății lungime a tabloului ari.

Var ary =; ary.lungime = 3; console.log (arică.lungime); // 3 ary = "abcd"; console.log (arică.lungime); // 6 ari.lungime = 2; console.log (arică.lungime); // 2 console.log (ary); // nedefinit

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

Aici vom vorbi despre adăugarea, eliminarea elementelor de matrice. Despre inversarea și sortarea unei matrice, precum și despre tăierea, înlocuirea și combinarea matricelor.

Adăugarea de elemente la o matrice.

Puteți folosi proprietatea length pentru a adăuga elemente noi la matrice:

Var myArray = ["Apple", "Microsoft", "Google", "Facebook"]; myArray = „Yahoo!”; console.log (myArray); // ["Apple", "Microsoft", "Google", "Facebook", "Yahoo!"]

Acest lucru va funcționa pentru că elementele matricei sunt numerotate de la zero și lungimeîncă una. Lungimeîntotdeauna echivalent indice + 1 deci este foarte ușor să adăugați un nou element la sfârșitul matricei. Ciudat, dar puteți adăuga un element într-o poziție care este mult mai mare decât lungimea matricei în sine:

Var myArray = ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards"]; myArray = "Lindsey Buckingham"; console.log (myArray); // ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards", nedefinit × 95, "Lindsey Buckingham"] console.log (myArray.length); // o sută

După cum se arată în comentarii, la sfârșitul matricei vor fi adăugate 95 de sloturi goale și un element „Lindsey Buckingham”. După aceea, obținem lungimea 100. O altă modalitate de a adăuga un nou element la matrice este să folosiți metoda Apăsați ():

Var myArray = ["Paul McCartney", "John Lennon", "George Harrison"]; myArray.push ("Ringo Starr", "George Martin"); console.log (myArray); // [„Paul McCartney”, „John Lennon”, „George Harrison”, „Ringo Starr”, „George Martin”]

Metodă Apăsați () returnează întotdeauna noua lungime a matricei (în cazul nostru 5). Puteți adăuga un articol folosind îmbinare ():

Var myArray = ["ghinda", "fag", "mongongo", "macadamia"]; myArray.splice (2, 0, "caju"); // adaugă „caju” în indexul 2 console.log (myArray); // ["ghinda", "fag", "caju", "mongongo", "macadamia"]

Când al doilea argument este 0, înseamnă că niciun element nu va fi eliminat și, prin urmare, orice argument ulterioar va fi adăugat la matrice la poziția specificată în primul argument.

Eliminarea elementelor dintr-o matrice

Eliminarea unui element este puțin mai dificilă decât adăugarea acestuia. Pentru a elimina un element de la sfârșitul unui tablou, se poate folosi pop ():

Var myArray = ["7-up", "Sprite", "Ginger Ale", "Lemonade"]; myArray.pop (); console.log (myArray); // ["7-up", "Sprite", "Ginger Ale"]

Metodă pop () elimină întotdeauna ultimul element din matrice și îl returnează.

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

Var myArray = ["cassava", "nucsoara", "lupin", "rhubarb"]; myArray.splice (2, 1); // elimină elementul de la indexul 2 console.log (myArray); // ["manioc", "nucșoară", "rubarbă"]

Spre deosebire de metoda îmbinare (), care este folosit pentru a adăuga elemente, aici al doilea argument este 1, care spune că vrem să eliminăm elementul cu indicele 2 (sau al treilea la rând). În acest caz, elementul „lupin” a fost eliminat.

Puteți elimina un element dintr-o matrice folosind operatorul șterge:

Var myArray = ["Byte Bandit", "Eliza", "Jeefo", "Michelangelo"]; console.log (myArray.length); // 4 șterge myArray; // elimină Eliza console.log (myArray.length); // 4 console.log (myArray); // ["Byte Bandit", nedefinit × 1, "Jeefo", "Michelangelo"]

Prima notă importantă: șterge () nu modifică lungimea matricei după ce elementul este eliminat (chiar dacă a fost ultimul element din matrice). Al doilea: șterge () schimbă valoarea elementului eliminat în nedefinit, deci la inversare myArray = nedefinit.

O modalitate bună de a elimina un element dintr-o matrice este să utilizați Array.remove de la John Resig. Mai jos este un exemplu de utilizare preluat de pe pagina sa:

// Array Remove - De John Resig (MIT Licensed) Array.prototype.remove = function (de la, la) (var rest = this.slice ((la || de la) + 1 || this.length); this.length = din< 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);

Poate doriți să vă uitați la soluția Viral Patel, una dintre funcțiile din Underscore.js sau grep () jQuery.

În plus, în JavaScript exista o metoda schimb (), care elimină primul element din tablou și returnează valoarea acestuia. Sa vedem codul:

Var myArray = ["Matt Kramer", "Jason Bieler", "Tom Defile", "Phil Varone"]; console.log (myArray.length); // 4 var firstItem = myArray.shift (); console.log (firstItem); // Matt Kramer console.log (myArray.length); // 3 console.log (myArray); // [„Jason Bieler”, „Tom Defile”, „Phil Varone”]

Folosind metoda schimb () am eliminat elementul, dar i-am salvat valoarea în variabila firstItem. Lungimea matricei s-a schimbat de la 4 la 3.

Această metodă poate fi utilă împreună cu metoda Apăsați (). Folosindu-le împreună, putem pune în coadă eficient elementele dintr-o matrice. Păstrăm lungimea matricei eliminând un element de la început și adăugând unul nou la sfârșit.

Dimpotrivă, putem folosi metoda dezactivați () pentru a adăuga un element la începutul matricei:

Var myArray = ["apito", "castanets", "maraca"]; console.log (myArray.length); // 3 myArray.unshift ("bară de sonerie", "tan-tan"); console.log (myArray.length); // 5 console.log (myArray); // ["chime bar", "tan-tan", "apito", "castanets", "maraca"]

Folosind metoda dezactivați () cu metoda pop (), puteți face coada înapoi adăugând elemente la început și eliminând de la sfârșitul matricei.

Inversarea și sortarea elementelor matricei.

Pentru a inversa elementele dintr-o matrice, putem folosi invers ():

Var myArray = ["numaratoare inversa", "final", "the"]; console.log (myArray); // ["numaratoare inversa", "finala", "the"] myArray = myArray.reverse (); console.log (myArray); // ["numărătoarea finală"]

Sortarea alfabetică a elementelor unei matrice este posibilă folosind metoda fel ():

Var myArray = ["xilofoane", "zebre", "juggernauts", "avocado"]; console.log (myArray); // ["xilofoane", "zebre", "juggernauts", "avocado"] myArray = myArray.sort (); console.log (myArray); // ["avocado", "juggernauts", "xilofoane", "zebre"]

Dar asta nu va funcționa cu numere.

Var myArray =; console.log (myArray); // myArray = myArray.sort (); console.log (myArray); //

Dacă trebuie să sortați numerele, atunci puteți utiliza următorul cod:

Funcția compareNumbers (a, b) (return a - b;) var myArray =; console.log (myArray); // myArray = myArray.sort (comparaNumere); console.log (myArray); //

După cum se arată mai sus, cu o funcție simplă lipită fel (), tabloul care conține numerele va fi sortat corect.

Combinarea matricelor.

Puteți concatena 2 sau mai multe matrice și puteți obține 1 matrice care conține elementele matricelor concatenate. Pentru aceasta folosim metoda concat ():

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myArray2 = ["Chris Murphy", "Patrick Pentland"]; var myNewArray = myArray.concat (myArray2); console.log (myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myNewArray = myArray.concat ("Chris Murphy", "Patrick Pentland"); console.log (myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Împărțirea unei matrice.

Puteți crea o matrice nouă care conține 1 sau mai multe elemente dintr-o matrice existentă folosind funcția felie ():

Var myArray = ["Voce", "Bas", "Chitara", "Tobe", "Mere", "Portocale"]; var myNewArray = myArray.slice (4); console.log (myNewArray); // ["Mere", "Portocale"]

Metodă felie () ia 1 sau 2 argumente. Dacă se trece 1 argument (index), atunci se creează o nouă matrice din toate elementele celui vechi, pornind de la indexul dat. Dacă se trec 2 argumente, atunci se creează o nouă matrice din elementele începând de la primul argument și până la elementul de la index trecut în al doilea parametru, fără a include ultimul. Pentru a fi mai clar, haideți să vedem codul de mai jos:

Var myArray = ["Voce", "Bas", "Chitara", "Tobe", "Mere", "Portocale"]; var myNewArray = myArray.slice (0, 4); console.log (myNewArray); // ["Voce", "Bas", "Chitara", "Tobe"]

Înlocuirea elementelor dintr-o matrice.

Folosim îmbinare () pentru a elimina elemente dintr-o matrice, dar putem înlocui și un element dintr-o matrice cu elemente noi:

Var myArray = ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myArray.splice (3, 1, „Scott Shriner”); // înlocuiți 1 element cu indexul 3 console.log (myArray); // [„Rivers Cuomo”, „Patrick Wilson”, „Brian Bell”, „Scott Shriner”]

Metodă îmbinare () returnează întotdeauna o matrice care conține elementele care au fost eliminate. Linia 2 va returna 1 articol „Brian Bell”.

Concluzie

Aceste articole au descris metode de lucru cu matrice în JavaScript. Unele elemente suplimentare pot fi vizualizate pe MDN pe care nu le-am inclus în această postare. Ele funcționează doar în IE9 +, așa că s-ar putea să nu fie utile.

Ceva de adăugat? Sau cunoașteți vreo bibliotecă interesantă care vă va ajuta să gestionați matricele? Vă rugăm să comentați!

În acest articol, vom arunca o privire asupra matricei JavaScript și a constituenților săi. JavaScript este proiectat ideal pentru programare. De fapt, implementează limbajul ECMAScript (referință ECMA-262).

Unde se folosește JavaScript? Este folosit ca limbaj încorporat pentru a defini o cale programatică către un subiect de aplicație. Poate fi găsit în browsere: este folosit acolo ca limbaj de scripting care oferă interactivitate paginilor web.

Cele mai importante caracteristici arhitecturale ale acestui produs sunt tastarea dinamică și slabă, managementul automat al memoriei, programarea perfectă, funcțiile care sunt obiecte din prima categorie.

În general, JavaScript a fost influențat de diverse motive, deoarece în timpul dezvoltării s-au dorit să creeze un limbaj similar cu Java, dar ușor de utilizat de programatori. Apropo, JavaScript nu este deținut de nicio întreprindere sau organizație, ceea ce îl face diferit de o serie de stiluri de programare utilizate de dezvoltatorii web.

Rețineți că JavaScript este o marcă comercială înregistrată a Oracle Corporation.

Ce este un Array?

O matrice se numește matrice care stochează valori numerotate. Fiecare astfel de valoare este denumită o componentă a matricei, iar cifra la care este asociată componenta este denumită index. Matricea JavaScript este netipificată. Aceasta înseamnă că părțile unei matrice pot fi de orice tip, iar părțile diferite aparținând aceleiași matrice sunt de tipuri complet diferite.

În plus, matricea JavaScript este dinamică, ceea ce înseamnă că nu este nevoie să declarați o dimensiune fixă. La urma urmei, puteți adăuga oricând detalii noi.

Producția de matrice

Folosind JavaScript, crearea unei matrice nu este deloc dificilă. Există două metode pentru aceasta. Primul implică realizarea unei matrice folosind un literal - paranteze pătrate, în interiorul căreia se află o listă de părți separate prin virgule.

  • var gol =; // matrice goală;
  • var numere =; // o matrice cu cinci componente digitale;
  • var diff =; // o matrice cu trei elemente de tipuri diferite.

De obicei, acest lucru nu necesită ca valorile să fie simple (șiruri și numere). Poate fi, de asemenea, orice altă expresie, de exemplu, literale subiect, alte funcții și matrice.

A doua modalitate de a crea o matrice este apelarea designerului Array (). Îl poți invita în trei moduri:

  • Apelarea designerului fără motiv: var b - nou Array (). Aceasta prevede crearea unui tablou gol echivalent cu un literal gol.
  • Constructorul specifică în mod explicit valoarea celor n componente ale matricei: var b = new Array (1, 3, 5, 8, „șir”, adevărat). În acest caz, designerului i se prezintă o listă de argumente care sunt convertite în componente ale noii matrice. Argumentele sunt scrise în matrice în locația în care sunt specificate.
  • Determinarea ariei pentru atribuirea ulterioară a valorilor. Acest lucru se face prin specificarea, la detectarea unui tablou, a unui număr cuprins între paranteze: var b = nou Array (5). Această metodă de detectare implică alocarea numărului necesar de componente matricei (fiecare dintre acestea fiind listată ca nedefinită) cu posibilitatea atribuirii ulterioare a valorilor în cursul prezentării. Acest formular este de obicei folosit pentru a plasa în prealabil o matrice Javascript a cărei lungime este cunoscută dinainte.

Scrierea, citirea și adăugarea detaliilor matricei

Puteți ajunge la componentele matricei folosind operatorul. Apropo, toate componentele din JavaScript sunt numerotate începând de la zero. Pentru a obține articolul solicitat, indicați numărul acestuia în. De regulă, detaliile pot fi modificate. Și pentru a adăuga JavaScript la matrice, trebuie doar să atribuiți o nouă valoare.

Trebuie remarcat faptul că matricele JavaScript pot stoca orice număr de elemente de orice fel.

Lungimea matricei

Deci, știm, lungimea matricei este în general un fenomen interesant. Să o luăm în considerare mai detaliat. Toate tablourile, indiferent dacă sunt construite folosind designerul Array () sau identificate folosind un literal de matrice, au o proprietate de lungime specifică care amintește numărul total de elemente stocate. Deoarece matricea poate conține detalii nedefinite (notate cu nedefinit), o expresie mai precisă sună astfel: calitatea lungimii este întotdeauna mai mare cu unu decât cel mai mare număr (index) al componentei matricei. Calitatea lungimii este ajustată automat pentru a rămâne precisă atunci când apar piese noi în matrice.

Puteți utiliza proprietatea length pentru a face să apară componenta de sfârșit a unui tablou.

Ultima parte are un index cu un mai mic decât dimensiunea matricei. La urma urmei, numărătoarea inversă începe întotdeauna de la zero. Oh, acest JavaScript! Lungimea matricei depinde de numărul exact de elemente. Prin urmare, dacă nu știți câte ar trebui să fie, dar trebuie să vă referiți la elementul final al matricei, trebuie să utilizați notația: v.length - 1.

Repetarea detaliilor unei matrice

Foarte des, proprietatea lungime este folosită pentru a itera detaliile unui tablou într-o buclă:

  • fructe var = ["capsuni", "piersici", "mar", "banana"];
  • pentru (var I = 0; i< fruits.lenght; i++);
  • document.scrie (fructe [i] + „...”).

În acest exemplu, componentele par a fi imbricate contigu și încep de la prima parte care este indexată la zero. Dacă nu este cazul, înainte de a apela fiecare element al matricei, este necesar să se verifice dacă este definit.

O buclă este, de asemenea, uneori folosită pentru a inițializa componente.

Creșterea și trunchierea unei matrice

Mă întreb cum se folosește JavaScript pentru a adăuga un șir la o matrice? În procesul de lucru cu matrice, calitatea lungimii este îmbunătățită automat, motiv pentru care trebuie să ne ocupăm noi de asta. Un lucru de reținut este că proprietatea length nu este doar citibilă, ci și scrisă. Dacă calității lungimii i se atribuie o valoare mai mică ca dimensiune decât cea actuală, atunci matricea este redusă la valoarea specificată. Orice componente care nu se află în noul interval de index sunt aruncate și valorile lor sunt pierdute, chiar dacă lungimea este returnată ulterior - valorile nu sunt restaurate.

Este destul de ușor să ștergeți matricea astfel: foo.length = 0.

Dacă calitatea lungimii este mai mare decât valoarea sa actuală, noi detalii neidentificate vor apărea la sfârșitul matricei, ceea ce o va crește la dimensiunea necesară.

Îndepărtarea pieselor de model

Operatorul de ștergere specifică nedefinit în componenta matricei, dar acesta continuă să existe. Dacă trebuie să eliminați un element dintr-o matrice JavaScript, astfel încât părțile rămase să se mute în spațiul liber, trebuie să utilizați una dintre metodele de matrice predefinite. Metoda Array.shift () elimină prima componentă, pop () componenta finală, iar metoda splice () elimină una sau o serie de componente oriunde în matrice.

Matricele sunt multidimensionale

Se pare că ne-am dat seama puțin, matricele bidimensionale sunt ceea ce trebuie luat în considerare în continuare. Vă amintiți că matricele JavaScript pot conține alte elemente ca componente? Această caracteristică este utilizată pentru a produce matrice multidimensionale. Pentru a vizita componente dintr-o serie de matrice, este suficient să aplicați parantezele pătrate de două ori.

tablouri asociative

Acum haideți să explorăm modul în care marca comercială JavaScript folosește matricele asociative. Pentru a face acest lucru, trebuie să ne uităm la teorie: tablourile asociative sunt uneori numite tabele hash. Datorită acestora, se folosesc șiruri în loc de indici. Utilizarea unor astfel de constructe este similară cu utilizarea numelui proprietății unui obiect simplu, dar în acest caz, atunci când se lucrează într-un format de matrice. Deoarece nu există modalități de a opera pe tablouri asociative în JavaScript, acestea sunt folosite mult mai rar decât cele obișnuite. Trebuie remarcat faptul că acestea pot fi în continuare utile pentru stocarea datelor și ușurează reținerea detaliilor care trebuie accesate.

Ieșire matrice

Acum ce învățăm în sistemul JavaScript? Afișarea unei matrice într-o casetă de dialog (pe ecranul monitorului), precum și afișarea valorilor componentelor matricei.

Dacă trebuie să afișați valorile tuturor componentelor dintr-un program, atunci este convenabil să utilizați instrucțiunea for pentru aceasta. Interesant este că variabila for rule counter este folosită ca index al componentei matricei.

Curatenie

Pentru a filtra o matrice JavaScript, trebuie să-i puneți la zero lungimea:

  • var myArray =;
  • myArray.length = 0.
  • clear: function () (;
  • aceasta.lungime = 0;
  • returnează asta;

Adăugarea și îndepărtarea componentelor

Ei bine, haideți să continuăm să studiem acest limbaj JavaScript interesant. Un element de matrice poate fi eliminat și adăugat în același mod ca proprietățile obișnuite ale altor obiecte. Dar există unele diferențe: adăugarea de proprietăți numerice poate schimba calitatea lungimii, iar modificarea proprietății lungime poate elimina calitățile numerice. În principiu, algoritmul pentru setarea calităților matricelor este următorul:

  • Când se adaugă o proprietate digitală necunoscută i, dacă lungimea este egală sau mai mică decât i, lungimea este determinată a fi i + 1.
  • La modificarea calității lungimii, se efectuează următoarele acțiuni: dacă valoarea atribuită este mai mică decât zero, atunci este aruncată o RangeError. Toate calitățile numerice și indicii care sunt egali cu noua lungime și care sunt mai mari sunt eliminați.

În general, eliminarea unui element dintr-o matrice JavaScript nu este dificilă. La urma urmei, chiar și setarea lungimii, trebuie să eliminați componentele „extra” din ea. Prin urmare, urmează opțiunea de curățare a matricei. Dacă variabila atribuită a noii matrice goale nu s-a potrivit dintr-un motiv oarecare, dar este necesar să o reduceți pe cea actuală, este suficient să atribuiți valoarea zero calității lungimii sale.

Metodele unshift, shift, pop și push

Deși componentele matricei sunt modificate manual, mulți recomandă utilizarea metodelor încorporate pentru a face acest lucru. Această nuanță este cea care garantează valoarea corectă a calității lungimii și absența golurilor în matrice. Apropo, lungimea de calitate corectă va corespunde numărului de componente.

Metoda push transferă părțile transferate la capătul matricei. Metoda pop redă componenta de terminare și o elimină.

În general, în Internet Explorer, mai devreme de versiunea a opta, unshift poate returna nedefinit, în alte browsere - o nouă valoare pentru lungime. Deci, este mai bine să nu vă bazați pe valoarea returnată de la unshift.

Adăugarea și eliminarea părților în mijlocul modelului

Dacă trebuie să ștergeți o matrice JavaScript, ce trebuie să faceți? Se știe că metoda splice are semnătura Array.prototype.splice.

Îndepărtează numărul de ștergere al componentelor din matrice, începând de la indexul de pornire. Dacă sunt transmise mai mult de două argumente, atunci toate argumentele ulterioare din matrice sunt plasate în locul celor anulate. Dacă start este minus, atunci indexul de la care se va relua checkout-ul va fi egal cu lungimea + start. Revenirea la matrice are loc din elementele eliminate.

De fapt, folosind metoda splice, puteți elimina componente din mijlocul matricei sau puteți adăuga câte doriți oriunde în matrice.

În cea mai simplă formă, dacă trebuie să ștergeți o componentă cu indicele i, trebuie să solicitați metoda de îmbinare din matricea cu parametrii i și 1.

Practic, al doilea parametru pentru metoda splice este opțional, dar comportamentul unei funcții cu un argument diferă în fiecare browser.

De exemplu, în Firefox, în cele mai recente variante ale Opera, în Safari și în Chrome, toate detaliile vor fi eliminate până la sfârșitul matricei.

Nicio componentă nu va fi eliminată în IE. În primele versiuni ale Opera, comportamentul nu poate fi prezis - va fi eliminată o parte cu începutul - 1 index. Prin urmare, ar trebui să treceți întotdeauna cel puțin două componente acestei metode.

Chei

Desigur, în timp ce învățați JavaScript, matricele asociative, așa cum am menționat mai devreme, trebuie de asemenea avute în vedere. Acesta este un tip abstract de informații (o interfață cu depozitul de date) care vă permite să salvați perechi de forma „(cheie, valoare)” și să sprijine operațiunile de adăugare a unei perechi, precum și eliminarea și căutarea unei perechi prin cheie:

GĂSĂ (cheie).

INSERT (valoare, cheie).

ELIMĂ (cheie).

Se presupune că două perechi cu chei similare nu pot fi stocate într-o matrice asociativă. În perechea k + v, v se numește valoarea asociată cu cheia k. Semantica și numele operațiilor de mai sus în diferite implementări ale unor astfel de matrice pot fi diferite.

Astfel, acțiunea FIND (cheie) returnează valoarea asociată cu cheia dată sau un obiect UNDEF specific, ceea ce înseamnă că nu există nicio valoare asociată cu cheia dată. Celelalte două acțiuni nu returnează nimic (cu excepția faptului că operația a avut succes).

În general, din punctul de vedere al interfeței, este convenabil să se considere o matrice asociativă ca o matrice simplă, în care nu numai numerele întregi pot fi folosite ca indici, ci și valori de alte tipuri, de exemplu șiruri.

Apropo, suportul pentru astfel de matrice este disponibil în multe limbaje de programare interpretate la nivel înalt, cum ar fi PHP, Perl, Ruby, Python, Tcl, JavaScript și altele. Pentru limbile care nu au instrumente încorporate pentru lucrul cu tablouri asociative, au fost create un număr mare de implementări sub formă de biblioteci.

Un exemplu de matrice asociativă este un agendă telefonică. În această variantă, valoarea este complexul „F. Nume + adresa ", iar cheia - numărul de telefon. Un număr de telefon are un singur proprietar, dar o persoană poate deține mai multe numere.

Extensii asociative

Trebuie remarcat faptul că cele mai faimoase extensii includ următoarele acțiuni:

  • FIECARE - „plimbați” prin toate perechile care urmează să fie salvate.
  • CLEAR - eliminați toate înregistrările.
  • MIN - găsiți perechea cu cea mai mică valoare a cheii.
  • MAX - găsiți perechea cu cea mai mare valoare a cheii.

În ultimele două opțiuni, trebuie să specificați acțiunea de comparare pe taste.

Implementări de matrice asociative

Există multe implementări diferite ale matricei asociative. Cea mai comună implementare se poate baza pe un tablou simplu, ale cărui componente sunt perechi (valoare, cheie). Pentru a accelera acțiunile de căutare, puteți sorta componentele acestei matrice după cheie și puteți găsi folosind Dar acest lucru va crește timpul necesar pentru a adăuga o nouă pereche, deoarece va trebui să „depărtați” componentele matricei pentru a împacheta o înregistrare nouă în celula goală care apare.

Cele mai cunoscute implementări se bazează pe diferiți arbori de căutare. De exemplu, într-o sală de lectură tipică C++ STL, containerul hărții este implementat pe baza unui arbore negru-roșu. În stilurile Ruby, Tcl, Python, se folosește unul dintre tipurile de tabele hash. Există și alte implementări.

În general, fiecare implementare are propriile avantaje și dezavantaje. Este important ca toate cele trei acțiuni să fie efectuate atât în ​​medie, cât și în cea mai proastă nuanță pe o perioadă de O (log n), unde n este numărul curent de perechi salvate. Pentru arborii de căutare potriviți (inclusiv arborii negru-roșu) această condiție este îndeplinită.

Se știe că în implementările bazate pe tabele hash, timpul mediu este definit ca O (1), care este mai bun decât în ​​acțiunile bazate pe arbori de căutare. Desigur, acest lucru nu garantează execuția de mare viteză a operațiilor individuale: durata unei INSERT este notată în cel mai rău caz ca O (n). Procesul INSERT durează mult timp, când factorul de umplere atinge punctul cel mai înalt și devine necesară reconstrucția indexului tabelului hash.

Apropo, aceste liste hash sunt proaste, deoarece nu pot fi folosite pentru a efectua acțiuni suplimentare rapide MAX, MIN și un algoritm pentru ocolirea tuturor perechilor salvate în ordinea descrescătoare sau crescătoare a cheilor.

  • Traducere

Majoritatea aplicațiilor care sunt dezvoltate astăzi trebuie să interacționeze cu un fel de set de date. Manipularea articolelor din colecții este o operațiune comună pe care este posibil să ați întâlnit-o. Când lucrați, de exemplu, cu tablouri, puteți, fără ezitare, să utilizați bucla obișnuită for, care arată cam așa: for (var i = 0; i< value.length; i++){} . Однако, лучше, всё-таки, смотреть на вещи шире.

Să presupunem că trebuie să afișăm o listă de produse și, dacă este necesar, să o împărțim în categorii, să o filtram, să o căutăm, să modificăm această listă sau elementele acesteia. Poate fi necesar să efectuați rapid unele calcule care implică elementele listei. Să presupunem că trebuie să adaugi ceva la ceva, să înmulți ceva cu ceva. Puteți găsi instrumente în JavaScript care fac mai rapidă și mai convenabilă rezolvarea unor astfel de probleme decât folosind o buclă for obișnuită?

De fapt, JavaScript oferă astfel de facilități. Unele dintre ele sunt discutate în materialul a cărui traducere vă prezentăm astăzi atenției. În special, vorbim de operatorul de extensie, de bucla for ... și de metodele include (), some (), every (), filter (), map () și reduce (). Aici vom vorbi în principal despre matrice, dar tehnicile discutate aici sunt de obicei potrivite pentru lucrul cu alte tipuri de obiecte.

Trebuie remarcat faptul că prezentările de ansamblu asupra abordărilor moderne ale dezvoltării în JS includ de obicei exemple pregătite folosind funcții săgeți. Poate că nu le folosești foarte des - poate pentru că nu-ți plac, poate pentru că nu vrei să petreci prea mult timp învățând ceva nou sau poate pur și simplu nu funcționează pentru tine. Prin urmare, aici, în majoritatea situațiilor, vor fi afișate două opțiuni pentru efectuarea acelorași acțiuni: utilizarea funcțiilor obișnuite (ES5) și utilizarea funcțiilor săgeată (ES6). Pentru cei începători cu funcțiile săgeată, rețineți că funcțiile săgeată nu sunt echivalente cu declarațiile și expresiile funcției. Nu merită să înlocuiți unul cu celălalt. În special, acest lucru se datorează faptului că acest cuvânt cheie se comportă diferit în funcțiile obișnuite și cu săgeți.

1. Operator de extindere

Operatorul de răspândire vă permite să „extindeți” matrice prin înlocuirea elementelor lor în loc de matrice în locul în care este utilizat acest operator. O abordare similară a fost propusă pentru literalele obiect.

▍ Punctele forte ale operatorului Spread

  • Aceasta este o modalitate simplă și rapidă de a-și „trage” elementele individuale dintr-o matrice.
  • Acest operator este potrivit pentru lucrul cu matrice și literale obiect.
  • Este o metodă rapidă și intuitivă de lucru cu argumente de funcție.
  • Operatorul de răspândire nu ocupă mult spațiu în cod - arată ca trei puncte (...).

▍ Exemplu

Să presupunem că ai sarcina de a enumera tratările tale preferate fără a folosi o buclă. Cu operatorul de răspândire, acest lucru se face astfel:

2. For... de buclă

Instrucțiunea for... of este destinată traversării obiectelor iterabile. Oferă acces la elementele individuale ale unor astfel de obiecte (în special, la elementele matricelor), ceea ce, de exemplu, le permite să fie modificate. Poate fi considerat un înlocuitor pentru bucla for obișnuită.

▍Puntele forte ale buclei for... of

  • Aceasta este o modalitate simplă de a adăuga sau actualiza articole de colecție.
  • Bucla for... of vă permite să efectuați diverse calcule folosind elemente (adunare, înmulțire și așa mai departe).
  • Este convenabil să îl utilizați atunci când trebuie să verificați orice condiții.
  • Folosirea acestuia duce la un cod mai curat și mai lizibil.

▍ Exemplu

Să presupunem că aveți o structură de date care descrie conținutul unei casete de instrumente și doriți să afișați acele instrumente. Iată cum să o faci cu o buclă for... of:

3. Metoda include ().

Metoda includes () este utilizată pentru a verifica prezența unui anumit element în colecție, în special, de exemplu, un anumit șir într-o matrice care conține șiruri. Această metodă returnează adevărat sau fals, în funcție de rezultatele verificării. Când îl utilizați, trebuie avut în vedere faptul că este sensibil la majuscule și minuscule. Dacă, de exemplu, colecția are un element șir SCHOOL, iar verificarea prezenței acestuia folosind includes () este efectuată pe șirul școlar, metoda va returna false.

▍ Punctele forte ale metodei include ().

  • Metoda includes () este utilă pentru a crea mecanisme simple de regăsire a datelor.
  • Oferă dezvoltatorului o modalitate intuitivă de a determina dacă unele date sunt într-o matrice.
  • Este convenabil să îl utilizați în expresii condiționate pentru modificarea, filtrarea elementelor și pentru efectuarea altor operații.
  • Utilizarea acestuia duce la o lizibilitate îmbunătățită a codului.

▍ Exemplu

Să presupunem că aveți un garaj reprezentat de o matrice cu o listă de mașini și nu știți dacă există sau nu o anumită mașină în acest garaj. Pentru a rezolva această problemă, trebuie să scrieți un cod care vă permite să verificați prezența unei mașini în garaj. Să folosim metoda includes ():

4. Metoda unor ().

Metoda some () vă permite să verificați dacă unele dintre elementele pe care le căutați există în matrice. Acesta, pe baza rezultatelor verificării, returnează adevărat sau fals. Este similar cu metoda includes () de mai sus, cu excepția faptului că argumentul său este o funcție și nu, de exemplu, un șir obișnuit.

▍Unele () puncte forte ale metodei

  • Metoda some () ne permite să verificăm dacă tabloul conține cel puțin unul dintre elementele de interes.
  • Verifică starea utilizând funcția transmisă acestuia.
  • Această metodă este convenabilă de utilizat.

▍ Exemplu

Să presupunem că ești proprietarul unui club și, în general, nu te interesează cine vine exact la clubul tău. Cu toate acestea, unii vizitatori nu au voie să intre în club, deoarece sunt predispuși la consumul excesiv de băuturi alcoolice, cel puțin dacă se află singuri în unitatea dvs. și nu există nimeni cu ei care să aibă grijă de ei. În acest caz, un grup de vizitatori poate intra în club doar dacă cel puțin unul dintre ei are cel puțin 18 ani. Pentru a automatiza acest tip de verificare, vom folosi metoda some (). Mai jos, aplicarea sa este demonstrată în două versiuni.

ES5

ES6

5. Metoda fiecărei ().

Fiecare metodă () parcurge matrice și verifică fiecare dintre elementele sale cu o anumită condiție, returnând true dacă toate elementele matricei îndeplinesc condiția și false în caz contrar. Veți observa că este similară cu metoda some ().

▍ Punctele forte ale fiecărei () Metode

  • Metoda every () vă permite să verificați dacă toate elementele dintr-o matrice se potrivesc cu o condiție.
  • Condițiile pot fi setate folosind funcții.
  • Promovează o abordare de programare declarativă.

▍ Exemplu

Să revenim la exemplul anterior. Acolo ai permis vizitatorilor sub 18 ani să intre în club, dar cineva a scris o declarație la poliție, după care ai ajuns într-o situație neplăcută. După ce totul a fost rezolvat, ai decis că nu ai nevoie de toate acestea și ai înăsprit regulile de vizitare a clubului. Acum un grup de vizitatori poate intra în club doar dacă vârsta fiecărui membru al grupului este de cel puțin 18 ani. Ca și data trecută, vom lua în considerare soluția problemei în două versiuni, dar de data aceasta vom folosi metoda fiecărui ().

ES5

ES6

6. Metoda filtrului ().

Metoda filter () vă permite să creați, pe baza unei anumite matrice, o nouă matrice care să conțină doar acele elemente ale matricei originale care îndeplinesc condiția specificată.

▍ Punctele forte ale filtrului () Metoda

  • Metoda filter () evită modificarea matricei originale.
  • Vă permite să scăpați de elementele inutile.
  • Îmbunătățește lizibilitatea codului dvs.

▍ Exemplu

Să presupunem că trebuie să le selectați din lista de prețuri doar pe cele care sunt mai mari sau egale cu 30. Să folosim metoda filtrului () pentru a rezolva această problemă.

ES5

ES6

7. Metoda hărții ().

Metoda map () este similară cu metoda filter () prin faptul că returnează și o nouă matrice. Cu toate acestea, este folosit pentru a modifica elementele matricei originale.

▍Punctele forte ale metodei hărții ().

  • Metoda map () evită necesitatea modificării elementelor matricei originale.
  • Este convenabil să modificați elementele matricei cu ajutorul acestuia.
  • Îmbunătățește lizibilitatea codului dvs.

▍ Exemplu

Să presupunem că aveți o listă de produse cu prețuri. Managerul tău are nevoie de o nouă listă de produse cu prețuri reduse cu 25%. Să folosim metoda map () pentru a rezolva această problemă.

ES5

ES6

8. reduce () metoda

Metoda reduce () , în forma sa cea mai simplă, vă permite să însumați elementele tablourilor numerice. Cu alte cuvinte, convertește matricea într-o singură valoare. Acest lucru îi permite să fie utilizat pentru a efectua diferite calcule.

▍Punctele forte ale metodei reduce ().

  • Metoda reduce () poate fi utilizată pentru a calcula suma sau media elementelor dintr-o matrice.
  • Această metodă accelerează și simplifică calculele.

▍ Exemplu

Să presupunem că trebuie să vă calculați cheltuielile pentru săptămână, care sunt stocate într-o matrice. Să rezolvăm această problemă folosind metoda reduce ().

ES5

ES6

Adaugă etichete
  • Traducere
  • I. Iterarea peste matrice reale
    1. Pentru fiecare metodă și metode conexe
    2. Pentru buclă
    3. Utilizarea corectă a for ... în buclă
    4. For... of loop (utilizarea implicită a unui iterator)
    5. Utilizarea explicită a unui iterator
    1. Folosind metode de iterare peste matrice reale
    2. Convertirea într-o matrice reală
    3. O notă despre obiectele runtime

I. Iterarea peste matrice reale

În prezent, există trei moduri de a repeta elementele unei matrice reale:
  1. Metoda Array.prototype.forEach;
  2. clasic pentru buclă;
  3. Un „bine format” pentru... în buclă.
În plus, în curând, odată cu apariția noului standard ECMAScript 6 (ES 6), sunt de așteptat încă două moduri:
  1. for ... of loop (utilizarea implicită a unui iterator);
  2. utilizarea explicită a unui iterator.

1. Metoda forEach și metodele conexe

Dacă proiectul dvs. este conceput pentru a susține capabilitățile standardului ECMAScript 5 (ES5), puteți utiliza una dintre inovațiile acestuia - metoda forEach.

Exemplu de utilizare:
var a = ["a", "b", "c"]; a.forEach (funcție (intrare) (console.log (intrare);));
În general, utilizarea forEach necesită conectarea bibliotecii de emulare es5-shim pentru browserele care nu au suport nativ pentru această metodă. Acestea includ IE 8 și versiuni anterioare, care sunt încă utilizate astăzi.

Avantajul forEach este că nu este nevoie să declarați variabile locale pentru a stoca indexul și valoarea elementului de matrice curent, deoarece acestea sunt transmise automat funcției de apel invers ca argumente.

Dacă sunteți îngrijorat de costul potențial al apelării pentru fiecare articol, nu vă faceți griji și citiți aceasta.

ForEach este conceput pentru a repeta peste toate elementele unei matrice, dar în afară de aceasta, ES5 oferă mai multe metode utile pentru a itera toate sau unele dintre ele, plus efectuarea unor acțiuni cu acestea:

  • every - returnează adevărat dacă pentru fiecare element al matricei callback returnează o valoare care este turnată la adevărat.
  • some - returnează adevărat dacă pentru cel puțin un element al matricei, callback returnează o valoare care este turnată la adevărat.
  • filtru - creează o nouă matrice care include acele elemente ale matricei originale pentru care callback-ul returnează adevărat.
  • hartă - creează o nouă matrice constând din valorile returnate de apel invers.
  • reduce - reduce un tablou la o singură valoare, aplicând pe rând un callback fiecărui element al matricei, începând cu primul (poate fi util pentru calcularea sumei elementelor matricei și a altor funcții finale).
  • reduceRight - Funcționează similar cu reduce, dar repetă peste elemente în ordine inversă.

2. Bucla for

Bine vechi pentru reguli:

Var a = ["a", "b", "c"]; indicele var; pentru (index = 0; index< a.length; ++index) { console.log(a); }
Dacă lungimea matricei rămâne neschimbată pe toată durata buclei, iar bucla în sine aparține unei părți de cod critice pentru performanță (ceea ce este puțin probabil), atunci puteți utiliza versiunea „mai optimă” a for cu stocarea lungimii matrice:

Var a = ["a", "b", "c"]; var index, len; pentru (index = 0, len = a.lungime; index< len; ++index) { console.log(a); }
În teorie, acest cod ar trebui să ruleze puțin mai rapid decât cel anterior.

Dacă ordinea iterației nu este importantă, atunci puteți merge și mai departe în ceea ce privește optimizarea și puteți scăpa de variabila pentru stocarea lungimii matricei prin schimbarea ordinii de iterație la opus:

Var a = ["a", "b", "c"]; indicele var; pentru (index = a.length - 1; index> = 0; --index) (console.log (a);)
Cu toate acestea, în motoarele JavaScript moderne, aceste jocuri optimizate de obicei nu înseamnă nimic.

3. Utilizarea corectă a for ... în buclă

Dacă vi se sfătuiește să utilizați o buclă for... în buclă, amintiți-vă că iterarea peste matrice nu este scopul pentru care este destinată. Spre deosebire de concepția greșită obișnuită, bucla for ... in nu repetă peste indicii matricei, ci proprietățile enumerate ale obiectului.

Cu toate acestea, în unele cazuri, cum ar fi iterarea peste matrice rare, pentru ... în poate fi utilă, cu condiția să luați unele măsuri de precauție, așa cum se arată în exemplul de mai jos:

// a este un tablou rar var a =; a = „a”; a = „b”; a = "c"; pentru (cheie var în a) (dacă (a.hasOwnProperty (cheie) && /^0$|^\d*$/.test(cheie) && cheie<= 4294967294) { console.log(a); } }
În acest exemplu, la fiecare iterație a buclei, sunt efectuate două verificări:

  1. că matricea are propria sa proprietate numită cheie (nu este moștenită de la prototipul său).
  2. acea cheie este un șir care conține notația zecimală a unui număr întreg a cărui valoare este mai mică decât 4294967294. De unde vine ultimul număr? Din definiția unui index de matrice din ES5, care implică faptul că cel mai mare indice pe care îl poate avea un element dintr-o matrice este (2 ^ 32 - 2) = 4294967294.
Desigur, astfel de verificări vor dura mai mult timp la executarea buclei. Dar în cazul unei matrice rare, această metodă este mai eficientă decât o buclă for, deoarece în acest caz sunt repetate numai acele elemente care sunt definite în mod explicit în matrice. Deci, în exemplul de mai sus, vor fi efectuate doar 3 iterații (pentru indicii 0, 10 și 10000) - față de 10001 în bucla for.

Pentru a nu scrie un cod atât de greoi de verificări de fiecare dată când trebuie să iterați peste o matrice, îl puteți proiecta ca o funcție separată:

Funcția arrayHasOwnIndex (matrice, cheie) (return array.hasOwnProperty (cheie) && /^0$|^\d*$/.test(cheie) && cheie<= 4294967294; }
Apoi corpul buclei din exemplu va fi redus semnificativ:

Pentru (tastați a) (dacă (arrayHasOwnIndex (a, cheie)) (console.log (a);))
Codul de verificări de mai sus este universal, potrivit pentru toate cazurile. Dar, în schimb, puteți utiliza o versiune mai scurtă, deși formal nu este complet corectă, dar totuși potrivită pentru majoritatea cazurilor:

Pentru (tastați a) (dacă (a.hasOwnProperty (cheie) && String (parseInt (cheie, 10)) === cheie) (console.log (a);))

4. Bucla for ... of (utilizarea implicită a unui iterator)

ES6, deși este încă în starea de schiță, ar trebui să introducă iteratori în JavaScript.

Un iterator este un protocol implementat pe obiecte care definește o modalitate standard de a obține o secvență de valori (finită sau infinită).
Un iterator este un obiect în care este definită următoarea metodă () - o funcție fără argumente care returnează un obiect cu două proprietăți:

  1. done (boolean) - adevărat dacă iteratorul a ajuns la sfârșitul secvenței care este iterată. Altfel, fals.
  2. valoare - definește valoarea returnată de iterator. Poate fi nedefinit (absent) dacă proprietatea realizată este adevărată.
Multe obiecte încorporate, incl. tablourile reale au iteratoare implicite. Cea mai simplă modalitate de a folosi un iterator pe tablouri reale este să folosiți noul pentru ... de construcție.

Un exemplu de utilizare pentru... a:

Var val; var a = ["a", "b", "c"]; pentru (val of a) (console.log (val);)
În exemplul de mai sus, bucla for... of apelează implicit iteratorul obiectului Array pentru a obține fiecare valoare din matrice.

5. Utilizarea explicită a unui iterator

Iteratorii pot fi, de asemenea, folosiți în mod explicit, totuși, în acest caz, codul devine mult mai complicat în comparație cu bucla for... of. Arata cam asa:

Var a = ["a", "b", "c"]; var it = a.entry (); intrare var; în timp ce (! (entry = it.next ()). done) (console.log (entry.value);)
În acest exemplu, metoda Array.prototype.entries returnează un iterator care este utilizat pentru a afișa valorile matricei. La fiecare iterație, entry.value conține o matrice de forma [cheie, valoare].

II. Iterarea peste obiecte asemănătoare matricei

Pe lângă matricele reale, JavaScript conține și obiecte asemănătoare matricei ... Ceea ce au în comun cu tablourile reale este că au o proprietate de lungime și proprietăți cu nume sub formă de numere corespunzătoare elementelor tabloului. Exemplele includ DOM-ul colecției NodeList și pseudo-matricea de argumente disponibile în orice funcție/metodă.

1. Utilizarea metodelor de iterare peste matrice reale

Cel puțin cele mai multe, dacă nu toate, metodele de iterare peste matrice reale pot fi folosite pentru a repeta peste obiecte asemănătoare matricei.

Construcțiile pentru și pentru ... din pot fi aplicate obiectelor asemănătoare matricei exact în același mod ca și matricelor reale.

Metodele ForEach și alte Array.prototype se aplică și obiectelor asemănătoare matricei. Pentru a face acest lucru, trebuie să utilizați un apel către Function.call sau Function.apply.

De exemplu, dacă doriți să aplicați forEach la proprietatea childNodes a unui obiect Node, puteți proceda astfel:

Array.prototype.forEach.call (node.childNodes, function (child) (// face ceva cu obiectul copil));
Pentru a ușura reutilizarea acestei tehnici, puteți declara o referință la metoda Array.prototype.forEach într-o variabilă separată și o puteți utiliza ca prescurtare:

// (Acest lucru presupune că tot codul de mai jos este în același domeniu) var forEach = Array.prototype.forEach; // ... forEach.call (node.childNodes, function (child) (// face ceva cu obiectul copil));
Dacă un obiect asemănător matricei are un iterator, atunci acesta poate fi utilizat în mod explicit sau implicit pentru a itera asupra obiectului în același mod ca și pentru matricele reale.

2. Convertiți într-o matrice reală

Există, de asemenea, o altă modalitate, foarte simplă, de a repeta peste un obiect asemănător matricei: convertiți-l într-o matrice reală și utilizați oricare dintre metodele de mai sus pentru a itera peste matrice reale. Pentru conversie, puteți utiliza metoda generică Array.prototype.slice, care poate fi aplicată oricărui obiect asemănător matricei. Acest lucru se face foarte simplu, așa cum se arată în exemplul de mai jos:

Var trueArray = Array.prototype.slice.call (arrayLikeObject, 0);
De exemplu, dacă doriți să convertiți o colecție NodeList într-o matrice reală, aveți nevoie de cod ca acesta:

Var divs = Array.prototype.slice.call (document.querySelectorAll ("div"), 0);
Actualizați: După cum s-a menționat în comentarii

Top articole similare