matrice Javascript, expert coders

O matrice este un set de valori care sunt identificate printr-un index.

Puteți utiliza, de asemenea sintaxa noua Constructor. În plus, va trebui să imprimați mai mult de 5-9 caractere ( „nou“ este opțională), există o problemă mai gravă într-un sens ambiguu:







Aceste două definiții arata foarte asemănătoare, dar au foarte diferite semnificații. Mai mult decât atât, să presupunem că cineva vrea să schimbe doua definiție, pentru că acum este necesar să se stabilească un singur element numărul 8 în matrice b. Este probabil ca el se va schimba după cum urmează (și cine este de vina?):

Desigur, acest lucru nu este ceea ce este necesar. Singura modalitate de a specifica o matrice cu un număr - pentru a utiliza sintaxa literală (paranteze pătrate).

Există avantaje la utilizarea noului Array sintaxă?

Ce tipuri de date pot conține o matrice?

O matrice poate cuprinde orice obiect sau un tip elementar. Mai multe tipuri de date pot fi simultan într-o singură matrice.

Cum de a avea acces la un element de matrice?

Elementele de matrice sunt proprietăți comune ale obiectului, și le puteți accesa precum și la proprietățile. Deoarece proprietățile identificatorilor este întotdeauna un șir de caractere, indicele matrice - același șir, nu un număr. Cu toate acestea, atunci când utilizați înregistrarea index (paranteze) pentru a aplica la proprietate, acesta poate fi utilizat și o valoare numerică, așa cum va fi convertit într-un interpret șir de caractere. Accesarea element de matrice prin punctul nu va funcționa, deoarece Proprietățile identefikator nu poate începe cu un număr. (Mai mult decât atât, acest comportament este derivat din regulile proprietăților obiectului, nu doar matrici).

Cum iterează prin matrice?

Se face, de obicei, sens de a utiliza un ciclu standard pentru:

În cazul în care matrice este destul de mare, s-ar putea să fie preocupat de volumul de muncă suplimentar la accesarea array.length la fiecare iterație. Pentru a evita acest lucru, puteți determina lungimea matrice în avans:

Folosind expresia ... în ea nu este recomandat să itera peste matrice, din moment ce se poate apuca, de asemenea, proprietățile enumerable ale prototipului (vezi. De mai jos)

Care sunt proprietățile unei matrice de unic?

Cea mai importantă proprietate a șirului - lungimea (siruri de caractere și funcții au, de asemenea, o proprietate lungime, dar lungimea de matrice este

În ECMA spune:
proprietate Array care aparține Array obiect, întotdeauna numeric mai mare decât numele de orice proprietate care este matrice indeskom.

Cu alte cuvinte, se calculează ca: (valoarea numerică a ultimului index) + 1

Matricele nu sunt limitate la lungimea de sus. Puteți adăuga un element al cărui indice este mai mare decât (lungime - 1), iar proprietatea lungime va fi modificată în conformitate cu definiția de mai sus. Tablourile au o lungime maximă, dar este foarte mare, astfel încât nici măcar nu gândesc la asta.







Matricele sunt întotdeauna delimitate de mai jos de zero. Dacă încercați să adăugați o valoare cu un indice negativ, doar a scrie o proprietate normală a obiectului (a se vedea, de asemenea, „tablouri asociative“ de mai jos)

Puteți manipula conținutul matrice, actualizarea valorii lungimii. Dacă umenshaetsya proprietatea lungimea de matrice, elementele cu indici mai mari sau egale cu noua lungime a unei matrice sunt eliminate (aceasta este singura modalitate de a elimina indexul din matrice - puteți elimina elementul, dar numai valoarea va fi șters, iar indicele va rămâne în vigoare - adică, matrice dvs. este „sparse“ = acolo apar găuri)

În schimb, dacă măriți proprietatea lungimea matrice la valoarea lui n, atunci în matrice va apărea n elemente noi, cu o valoare nedefinită. De fapt, nimic nu sa schimbat, cu excepția lungimii lungimii matrice.

Există două proprietăți suplimentare ale pseudo-matrice: index și intrare. Aceste proprietăți apar în matrice create folosind expresii regulate.

Ce metode sunt moștenite de la Array.prototype?

Oektov Array oferă un număr mare de instrumente foarte utile în detaliu luate în considerare funcția ECMA5. cele mai multe dintre care s-ar putea să fie familiarizat. Următoarele metode de matrice sunt disponibile pentru toate cele mai recente versiuni de browsere.

CONCAT copii surfactant matrice și se adaugă la ea argumentele

se alăture combină elementele unei matrice într-un șir de caractere, separate prin argument

schimbare elimină și returnează primul element

pop elimină și returnează ultimul element

unshift adaugă argumente la începutul matrice

împinge adaugă argumente la sfârșitul șirului

revers inversează ordinea elementelor din matrice fără copierea

felie copii surfactant parte din matrice - elementele cu indexul încep să se încheie, nu inclusiv la sfârșitul anului

lipitură - înlătură aceste elemente dintr-o matrice, înlocuindu-le cu argumente opționale

sortare - Sortarea unei matrice fără copierea, utilizând în mod opțional o funcție comparare ca argument

Cauzele ToString se alăture fără un argument

indexOf returnează indicele primului element egal cu valoarea specificată, sau -1 dacă nu a fost găsit

lastIndexOf returnează indicele ultimului element egal cu valoarea specificată, sau -1 în cazul în care nu a fost găsit

fiecare returnează true, dacă funcția a trecut returnează adevărat pentru fiecare element al matricei

unele vozvradaet adevărat, în cazul în care a trecut la funcția returnează adevărat pentru cel puțin un element de matrice

foreach utilizează funcția trecut la fiecare element al matricei

Harta creează o nouă matrice care conține rezultatele funcției transmise fiecărui element de matrice

Filtrul creează o nouă matrice care conține toate elementele pentru care funcția transmisă returnează true

reducerea se aplică o funcție simultan la cele două valori ale șirului (de la stânga la dreapta), astfel încât matrice este redusă la o singură valoare (notă: reducerea a avut o valoare diferită în versiunile anterioare prototype.js)

reduceRight aplică o funcție simultan la cele două valori ale șirului (de la dreapta la stânga), astfel încât matrice este redus la o singură valoare

Cum să știu dacă tipul de obiect Array?

Și ce despre „rețele asociative“?

De fapt, în acest cod (chiar dacă nu este incorect) utilizarea necorespunzătoare a matrice de obiect. Prin matrice nu se adaugă nici un element (array.length este 0). Tot ce am făcut este atribuit proprietățile obiectelor obișnuite - de fapt, am creat un tabel hash.

Pentru a ilustra acest punct, putem înlocui obiectul Array la orice alt obiect și pentru a obține același rezultat.

Mai mult decât atât, crearea de hash-uri de pe Array obiect potențial periculos. Dacă cineva se va extinde Array.prototype proprietăți enumerable (de exemplu, care se poate face cu biblioteca prototype.js), atunci acestea vor fi listate într-o buclă pentru ... în, distruge logica (sau cel puțin va trebui să utilizeze o metodă ineficientă a hasOwnProperty) .

Crearea hashes pe obiect de obiect și nicăieri în altă parte, din moment ce acordul Object.prototype nu poate fi prelungit.

A se vedea, de asemenea: