3 lucruri pe care nu le cunoașteți despre matrice JavaScript
Arrays sunt o caracteristică largă a limbajelor de programare; sunt variabile speciale care pot fi folosite pentru a stoca mai multe valori în același timp. Cu toate acestea, atunci când vine vorba de JavaScript, la fel de ușor ca este de a învăța, există întotdeauna mai mult de explorat.
În acest post, vom examina trei caracteristici mai puțin cunoscute, dar importante ale unor array-uri JavaScript pe care probabil nu le-ați fi cunoscut înainte.
1. Adăugați Proprietăți personalizate în Arrays
Dacă ar fi trebuit să străluciți pe Internet căutând o definiție detaliată a matricelor JavaScript, veți descoperi că aproape fiecare sursă va eșua, într-adevăr este, un obiect.
De fapt, aproape tot ceea ce facem în JavaScript va fi se dovedesc a fi un obiect. Există două tipuri de tipuri de date în JavaScript, primitivele și obiecte, dar primitivii sunt întotdeauna înfășurați în interiorul obiectelor.
Array, Function, Date, etc sunt predefinite obiecte JavaScript care au metode încorporate, proprietăți și propria sintaxă standardizată.
Mijloacele JavaScript pot avea trei tipuri diferite de proprietăți:
- Indicii unei matrice sunt, de asemenea, proprietăți
- Proprietăți încorporate
- Proprietăți personalizate puteți adăuga singuri
Primele două sunt mai bine cunoscute, le puteți folosi în fiecare zi, dar să le vedem rapid înainte de a sări în modul în care puteți adăuga propria proprietate personalizată într-o matrice.
Indicii ca proprietăți
Jetoanele JavaScript utilizează sintaxa brațului plat, precum var ary = ["portocaliu", "mere", "lychee"];
.
Indicii elementelor de matrice sunt în principiu proprietăţi unde nume de proprietate sunteți totdeauna non-negative întregi.
element-pereche de elemente a unei matrice este similară cu cheie-valoare pereche a unui obiect.
Indicii reprezintă o caracteristică unică a obiectului Array și, spre deosebire de celelalte proprietăți încorporate, pot fi setați numai cu sintaxa paranteză, precum ary [3] = "piersic";
.
Proprietăți încorporate
Arrays au, de asemenea proprietăți încorporate, precum array.length
. lungime
proprietatea poartă o valoare întregă care reprezintă lungimea unei matrice.
În general, proprietățile încorporate pot fi găsite frecvent în obiecte JavaScript predefinite, cum ar fi matricea. Împreună cu metodele încorporate, ele ajută personalizați obiectele generice, astfel încât obiectele să fie potrivite pentru nevoi diferite.
Proprietățile încorporate pot fi accesate fie cu object.key
sau obiecta [ „cheie“]
sintaxă. Deci, puteți scrie, de asemenea ary [ "lungime"]
pentru a accesa lungimea unui matrice.
Creați proprietăți personalizate pentru obiectul Array
Acum, să vorbim adăugând propriile proprietăți la matrice. Arrays sunt obiecte predefinite care stochează diferite tipuri de valori la indicatori diferiți.
De obicei, nu este nevoie să adăugați proprietăți personalizate într-o matrice; acesta este unul dintre motivele pentru care începătorii de obicei nu sunt învățați despre această caracteristică. De fapt, dacă doriți să tratați o matrice ca un obiect obișnuit prin adăugarea de perechi cheie-valoare la ea, ar fi bine utilizați un obiect obișnuit pentru scopul dvs.. Dar asta nu înseamnă că nu există cazuri speciale unde puteți utiliza faptul că o matrice este un obiect, adăugând una sau mai multe proprietăți personalizate.
De exemplu, puteți adăuga o proprietate personalizată într-un tablou care să fie identifică "tipul" sau "clasa" elementelor sale, așa cum puteți vedea în exemplul de mai jos.
var ary = ["portocaliu", "mere", "lychee"]; ary.itemClass = "fructe"; console.log (ary + "sunt" + ary.itemClass); // "portocale, măr, liceu sunt fructe"
Rețineți că proprietatea personalizată pe care o adăugați într-o matrice este enumerabile, ceea ce înseamnă că va fi preluat de bucle, cum ar fi pentru ... in
afirmație.
2. Faceți buclă prin elemente de matrice
Probabil spuneți "Știu deja că", care este cel mai probabil adevărat, știți deja cum să treceți prin elemente de matrice. Dar este, de asemenea, adevărat că a spune "bucla prin elemente de matrice" este un pic abstractă, deoarece ceea ce prindeam de fapt sunt indici ai matricei.
Deoarece indiciile matricei sunt compuse numai din non-negative întregi, vom itera o valoare intrega incepand de la zero si terminand la intreaga lungime a matricei, apoi folosim acea valoare iterativa pentru a accesa elementul matricei la un indice dat.
Cu toate acestea, deoarece ECMAScript6, există o modalitate de a buclă direct prin valorile matricei fără a deranja cu indicii, și acest lucru se poate face folosind pentru ... de
buclă.
Într - o matrice, pentru ... de
buclă va bifa prin elementele matrice în ordinea indicilor, cu alte cuvinte, va avea grijă să iterăm peste indici și să obținem un indice valoarea matricei existente la un indice dat. Această buclă este ideală dacă doriți doar să faceți buclă prin toate elementele matricei și să lucrați cu ele.
var ary = ["portocaliu", "mere", "lychee"]; pentru (a permite elementul de ari) console.log (element); "orange", "apple", "lychee"
Pentru comparație, cu regulat pentru
buclă, vom obține indicii în locul valorilor ca ieșire.
var ary = ["portocaliu", "mere", "lychee"]; pentru (var element = 0; element < ary.length; item++) console.log(item); // 0, 1, 2
3. Numărul de elemente nu este lungimea sa
De obicei, când vorbim despre lungimea unei matrice, credem că este fie numărul de valori pe care o păstrează matricea, fie lungimea pe care am dat-o matricii manual. Totuși, în realitate, depinde lungimea unui matrice cel mai mare index existent în interiorul acestuia.
Lungimea este a proprietate foarte flexibilă. Fie că ați fixat deja sau nu lungimea unui matrice, dacă continuați să adăugați valori la matrice, lungimea acestuia continuă să crească în mod corespunzător.
var var = []; ary = lungime = 3; console.log (ary.length); // 3 ary [5] = "abcd"; console.log (ary.length); // 6
În exemplul de mai sus, puteți vedea că am dat la matrice o singură valoare la indexul 5, iar lungimea devine 6. Acum, dacă credeți că adăugând o valoare la indexul 5, matricea a creat automat indicii de la 0 la 4 , atunci presupunerea dvs. este incorectă. Sunt într-adevăr niciun indice existent de la 0 la 4 în acea matrice. Puteți verifica acest lucru folosind în
operator.
var var = []; ary = lungime = 3; console.log (ary.length); // 3 ary [5] = "abcd"; console.log (ary.length); // 6 console.log (0 în ari); // fals
Matricea Ary
este ceea ce noi numim a "sparse" matrice, o matrice în cazul în care indicii nu sunt create continuu, și aveți lacune. Opusul unei serii "rare" este "dens" unde indicii există în mod continuu în matrice, iar numărul elementelor este același ca și lungime
.
lungime
proprietate este, de asemenea, capabil de trunchierea unei matrice, asigurându-vă că cel mai înalt indice prezent în matrice este întotdeauna mai puțin decât el însuși, la fel de lungime
este întotdeauna numeric mai mare decât cel mai înalt index în mod prestabilit.
În exemplul de mai jos, puteți vedea cum pierdem elementul la indexul 5 scăzând lungime
din Ary
mulțime.
var var = []; ary = lungime = 3; console.log (ary.length); // 3 ary [5] = "abcd"; console.log (ary.length); // 6 ary.length = 2; console.log (ary.length); // 2 console.log (ary [5]); // nedefinit
Citirea în continuare
- 10 termeni JavaScript care ar trebui să știți până acum
- 4 nu-așa-comune, dar de ajutor declarații Javascript trebuie să știți
- Optimizarea codului cu JS Hint - un instrument pentru scrierea cu Javascript