Arrays în javascript, javascript

Pentru a extrage un element, plasați indicele în paranteze pătrate. Primul indice este 0:

Hopa! Am creat o matrice cu două fructe și un măgar. Acum trebuie să scoatem măgarul.

Metode de tip pop și push

Următorul exemplu arată modul în care "Donkey" este preluat dintr-o matrice:

Rețineți că pop modifică matricea însăși.

Analogul pop este metoda de împingere. care adaugă un element la matrice. De exemplu, am uitat să adăugăm o piersică:

Sarcina de auto-împlinire

  1. Creați o serie de stiluri cu elementele "Jazz", "Blues";
  2. Adăugați valoarea "Rock'n'Roll";
  3. Înlocuiți a doua valoare de la capăt cu valoarea "Classic". Ar trebui să obțineți un tablou: "Jazz", "Classic", "Rock'n'Roll". Codul ar trebui să funcționeze pentru orice lungime a matricei;
  4. Extrageți ultima valoare din matrice și extrageți-o prin alertă.

Metode de schimbare / de schimbare

Și trecerea. și unshift pot lucra cu mai multe elemente deodată:

Sarcina de auto-împlinire

Scrieți codul de ieșire prin intermediul unei alerte a unei valori aleatorii din arr arr:

Notă: Codul pentru obținerea unui număr aleatoriu de la valoarea minimă la valoarea maximă (inclusiv) este după cum urmează:

Trebuie să extragem un număr aleator de la 0 la arr.length-1 (inclusiv):

Suprafața array

Sarcina de auto-împlinire

Creați funcția de căutare (arr, valoare). care găsește valoarea în matricea specificată și returnează indexul sau -1. dacă nu se găsește nicio valoare.

O posibilă soluție ar putea arăta astfel:

Dar acest lucru nu este adevărat, deoarece == nu specifică diferența între 0 și false.

Ar fi chiar mai rezonabil să definim găsirea printr-o condiție pentru a verifica dacă metoda indexOf există.

Sarcina de auto-împlinire

Creați un filtru funcționalNumeric (arr). care ia o matrice și returnează o matrice nouă care conține numai valori numerice de la arr.

Un exemplu despre cum ar trebui să funcționeze acest lucru:

Soluția este de a trece prin matrice și de a adăuga valori la noua matrice, dacă acestea sunt numerice.

să se alăture și să se împartă

Acesta combină o matrice într-un șir utilizând delimitatorul specificat:

Transformarea inversă se realizează cu ușurință utilizând metoda divizării:

Sarcina de auto-împlinire

Obiectul include proprietatea className. care conține nume de clasă separate prin spații:

Scrieți funcția addClass (obj, cls). care adaugă clasa CLS. dar numai dacă nu există:

Trebuie să separați numele de clasă și bucla în părți. Dacă clasa nu este găsită, atunci ea este adăugată.

Ciclul este ușor optimizat pentru o performanță sporită:

În exemplul de mai sus, variabila c este definită la începutul buclei, iar ultimul său index este setat la i.

Folosiți lungimea pentru a trunchia o matrice

Folosind proprietatea lungime, puteți tăia un matrice după cum urmează:

Specificați lungimea și browserul taie matricea.

O matrice este un obiect care rezultă din aceasta

Acest lucru diferă de concept în alte limbi, unde matricele reprezintă un segment continuu de memorie. De asemenea, acest lucru diferă de coada sau stiva bazată pe listele legate.

Cheile de matrice non-numerice

Cheile sunt numere, dar pot avea orice nume:

De exemplu, push / pop funcționează numai cu elementele extreme ale matricei, deci sunt incredibil de rapide.

împinge doar funcționează cu sfârșitul:

Metodele de schimbare / decalare sunt lente, deoarece trebuie să renumeroteze întreaga matrice. Metoda de îmbinare poate de asemenea să modifice numerotarea:

Sarcina de auto-împlinire

Care va fi rezultatul? De ce?

Deoarece matricile sunt obiecte, arr.. De fapt, este un apel la o metodă obiect, cum ar fi objmetodă:

Stâlpi rare, lungimea descrierii

În exemplul următor, vom adăuga două elemente la fructele goale. dar valoarea lungimii va rămâne 100:

Dacă încercați să imprimați o matrice rară, browserul va returna valorile indiciilor lipsă ca elemente goale:

Dar o matrice este un obiect cu două chei. Valorile lipsă nu ocupă spațiu.

Rândurile rare se comportă ciudat atunci când se aplică metodele de matrice. Ei nu au nici o idee că indiciile sunt omise:

Încercați să evitați aglomerările rare. În orice caz, metodele lor nu vor funcționa corect. În schimb, utilizați Obiect.

Eliminarea dintr-o matrice

După cum știm, matricele sunt obiecte, așa că am putea folosi șterge. pentru a șterge valoarea:

Vedeți că valoarea este ștearsă, dar nu așa cum ne-am dori, deoarece matricea conține un element neasignat.

Operatorul de ștergere șterge perechea cheie-valoare, și asta-i tot. Firește, deoarece matricea este doar o hash, poziția elementului eliminat devine nedefinită.

Cel mai adesea, trebuie să eliminăm elementul, fără a lăsa "găuri" între indicii. Există o altă metodă care ne va ajuta în acest sens.

Metoda de îmbinare

Elimină elementul deleteCount. începând cu index. și apoi inserează elem1 în locul său. elemN.

Să aruncăm o privire la câteva exemple:

Deci, puteți folosi o îmbinare. pentru a șterge un element din matrice. Numerele elementelor matrice sunt deplasate pentru a umple golul:

Următorul exemplu arată modul de înlocuire a elementelor:

Metoda de îmbinare returnează o serie de elemente șterse:

Această metodă poate utiliza, de asemenea, un indice negativ, care este contorizat de la sfârșitul matricei:

Sarcina de auto-împlinire

Obiectul conține proprietatea className. care conține nume de clasă separate prin spații:

Scrieți funcția removeClass (obj, cls). care elimină clasa CLS. dacă este dat:

Un pic optimizați-l:

În exemplul de mai sus, variabila c este setată la începutul buclei, iar ultimul său index este dat pentru i.

Ciclul în sine este executat în direcția opusă, terminând cu condiția i> = 0. Aceasta se face pentru că i> = 0 este verificată mai repede decât i. Ceea ce accelerează căutarea unei proprietăți în c.

Felie de metodă

Puteți omite al doilea argument pentru a obține toate elementele care încep de la un anumit index:

Metoda sprijină indicii negativi, la fel ca String # slice.

Metoda inversă

O altă metodă utilă este inversă. Să presupunem că vreau să obțin ultima parte a domeniului, de exemplu, "com" de la "my.site.com". Iată cum se face:

Puteți crea apeluri mai lungi, de exemplu, invers ()0] [1[5]. sintaxa limbajului permite acest lucru.

Sortați, sortați metoda (fn)

Metoda sort () sortează un tablou fără a modifica numărul de elemente:

Rulați codul de mai sus. Obțineți ordinea 1. 15. 2. Acest lucru se datorează faptului că metoda convertește totul la un șir și folosește ordinea lexicografică prestabilită.

Pentru a face metoda mai inteligentă, trebuie să trecem la aceasta o funcție de comparare definită de utilizator. Trebuie să ia două argumente și să returneze 1, 0 sau -1:

Acum totul funcționează corect.

Sarcina de auto-împlinire

Creați funcția ageSort (persoane) pentru a sorta matricea obiectelor de oameni după vârstă:

Trebuie să utilizați sortul # Array și o comparație personalizată:

O versiune mai scurtă

Funcția de comparație poate fi mai scurtă. Soluție alternativă:

Funcționează, deoarece nu avem nevoie să întoarcem 1 / -1 / 0. Numerele pozitive sau negative vor funcționa.

new Array ()

Este rar folosit deoarece parantezele pătrate [] sunt mai scurte.

Există, de asemenea, posibilitatea ca noul Array. numit cu un singur argument numeric, va crea o matrice de o anumită lungime cu elemente nedefinite:

În exemplul de mai sus, am fost nedefiniți. deoarece noul Array (număr) creează o matrice goală cu lungimea parametrului egală cu numărul.

Acest lucru poate fi destul de neașteptat. Dar dacă știți despre această caracteristică, puteți utiliza noul Array (număr). de exemplu, după cum urmează:

Acesta este un mod optimizat de a repeta șirul.

Seturi multidimensionale

Aceasta poate fi utilizată pentru a crea cadre multidimensionale:

concluzie

Acest lucru ar trebui să fie suficient în 95% din cazuri. Pentru a afla despre alte metode, consultați Ghidul Mozilla Array.

Traducerea articolului "Array" a fost pregătită de echipa prietenoasă a proiectului Saitostroenie de la A la Z.

Articole similare