Declararea unei matrice în javascript. Conversia unui șir într-o matrice - split. metodele pop() și shift().

Matrice

Matrice este o colecție ordonată de valori. Valorile dintr-o matrice se numesc elemente, iar fiecare element este caracterizat de o poziție numerică în matrice, numită index. Matricele în JavaScript sunt netipizate: elementele matricei pot fi de orice tip și diferite elemente ale aceleiași matrice pot avea tipuri diferite. Elementele de matrice pot fi chiar obiecte sau alte matrice, permițându-vă să creați structuri de date complexe, cum ar fi matrice de obiecte și matrice de matrice.

Indicii de matrice JavaScript încep de la zero și folosesc numere întregi de 32 de biți - primul element al matricei are indicele 0. Matricele JavaScript sunt dinamice: pot crește și micșora dimensiunea după cum este necesar; nu este nevoie să declarați dimensiuni fixe ale matricei atunci când le creați sau să realocați memorie atunci când dimensiunile lor se schimbă.

Matricele în JavaScript sunt o formă specializată de obiecte, iar indicii de matrice înseamnă puțin mai mult decât nume de proprietăți, care întâmplător sunt numere întregi.

Crearea de tablouri

Cel mai simplu mod de a crea o matrice este de a folosi un literal, care este o simplă listă de elemente de matrice, separate prin virgulă, înconjurate de paranteze drepte. Valorile dintr-un literal de matrice nu trebuie să fie constante - pot fi orice expresii, inclusiv literale obiect:

Var gol = ; // Matrice goală var numere = ; // Matrice cu cinci elemente numerice var misc = [ 1.1, true, "a", ]; // 3 elemente de diferite tipuri + virgulă finală var bază = 1024; var table = ; // Matrice cu variabile var arrObj = [, ]; // 2 tablouri în interior care conțin obiecte

Sintaxa literală a matricei vă permite să inserați o virgulă finală opțională, de ex. literalul [,] se potrivește cu o matrice cu două elemente, nu trei.

O altă modalitate de a crea o matrice este apelarea constructorului matrice(). Puteți apela constructorul în trei moduri diferite:

    Apelați constructorul fără argumente:

    Var arr = nou Array();

    În acest caz, va fi creată o matrice goală, echivalentă cu literalul.

    Apelați constructorul cu un singur argument numeric care specifică lungimea matricei:

    Var arr = nou Array(10);

    În acest caz, va fi creată o matrice goală de lungimea specificată. Această formă de apelare a constructorului Array() poate fi folosită pentru a pre-aloca memorie pentru o matrice dacă numărul elementelor sale este cunoscut dinainte. Rețineți că aceasta nu stochează nicio valoare în matrice.

    Specificați în mod explicit valorile primelor două sau mai multe elemente de matrice sau a unui element nenumeric în apelul constructorului:

    Var arr = new Array(5, 4, 3, 2, 1, "test");

    În acest caz, argumentele către constructor devin valorile elementelor noii matrice. Utilizarea literalelor matrice este aproape întotdeauna mai ușoară decât utilizarea constructorului Array().

Citirea și scrierea elementelor de matrice

Elementele matricei sunt accesate cu ajutorul operatorului. În stânga parantezelor trebuie să existe o referință de matrice. În paranteze trebuie să existe o expresie arbitrară care returnează o valoare întreagă nenegativă. Această sintaxă este utilă atât pentru citirea, cât și pentru scrierea valorii unui element de matrice. Prin urmare, toate următoarele instrucțiuni JavaScript sunt valide:

// Creați o matrice cu un element var arr = ["world"]; // Citiți elementul 0 var value = arr; // Scrieți valoarea elementului 1 arr = 3,14; // Scrieți valoarea elementului 2 i = 2; arr[i] = 3; // Scrieți valoarea elementului 3 arr = "bună ziua"; // Citiți elementele 0 și 2, scrieți valoarea în elementul 3 arr] = arr;

Permiteți-mi să vă reamintesc că tablourile sunt un tip specializat de obiect. Parantezele pătrate folosite pentru a accesa elementele matricei acționează exact la fel ca parantezele pătrate folosite pentru a accesa proprietățile obiectului. Interpretul JavaScript convertește indecșii numerici din paranteze în șiruri de caractere — indexul 1 devine șirul „1” — și apoi folosește șirurile ca nume de proprietate.

Nu este nimic special în conversia indicilor numerici în șiruri de caractere: puteți face același lucru cu obiectele obișnuite:

Var obj = (); // Creați un obiect simplu obj = "unul"; // Indexați-l cu numere întregi

Lucrul cu matrice este că atunci când utilizați nume de proprietate care sunt numere întregi nenegative, matricele determină automat valoarea proprietății lungime. De exemplu, mai sus am creat o matrice arr cu un singur element. Apoi a atribuit valori elementelor sale la indecșii 1, 2 și 3. Ca urmare a acestor operațiuni, valoarea proprietății lungime a tabloului s-a schimbat la 4.

Ar trebui să distingeți clar indecșii dintr-o matrice de numele proprietăților obiectelor. Toți indicii sunt nume de proprietăți, dar numai proprietățile cu nume reprezentate prin numere întregi sunt indici. Toate tablourile sunt obiecte și le puteți adăuga proprietăți cu orice nume. Cu toate acestea, dacă atingeți proprietăți care sunt indici de matrice, matricele răspund prin actualizarea valorii proprietății lungime după cum este necesar.

Vă rugăm să rețineți că numerele negative și non-întregi pot fi folosite ca indici de matrice. În acest caz, numerele sunt convertite în șiruri de caractere, care sunt folosite ca nume de proprietăți.

Adăugarea și eliminarea elementelor de matrice

Am văzut deja că cel mai simplu mod de a adăuga elemente la o matrice este de a atribui valori noilor indici. De asemenea, puteți utiliza metoda pentru a adăuga unul sau mai multe elemente la sfârșitul matricei. Apăsaţi():

Var arr = ; // Creați o matrice goală arr.push("zero"); // Adăugați o valoare la final arr.push("one",2); // Adăugați încă două valori

De asemenea, puteți adăuga un element la sfârșitul matricei, atribuind o valoare elementului arr. Pentru a insera un element la începutul unui tablou, puteți folosi metoda unshift(), care mută elementele existente în matrice în poziții cu indici mai mari.

Puteți șterge elemente de matrice folosind operatorul de ștergere, la fel ca proprietățile obișnuite ale obiectului:

Var arr = ; șterge arr; 2 în arr; // false, indexul 2 din matrice nu este definit arr.length; // 3: operatorul de ștergere nu modifică proprietatea de lungime a matricei

Eliminarea unui element este similară (dar ușor diferită) cu alocarea valorii nedefinite acelui element. Rețineți că aplicarea operatorului de ștergere la un element de matrice nu modifică valoarea proprietății lungime și nici nu deplasează în jos elementele cu indici mai mari pentru a umple golul lăsat prin ștergerea elementului.

De asemenea, este posibil să eliminați elemente la sfârșitul unui tablou prin simpla atribuire a unei noi valori proprietății lungime. Array-urile au o metodă pop()(opusul metodei push()), care reduce lungimea matricei cu 1 și returnează valoarea elementului eliminat. Există și o metodă schimb()(opusul unshift()), care elimină elementul de la începutul matricei. Spre deosebire de operatorul de ștergere, metoda shift() mută toate elementele în jos într-o poziție sub indexul lor curent.

În cele din urmă, există o metodă multifuncțională lipitură(), care vă permite să inserați, să ștergeți și să înlocuiți elemente de matrice. Schimbă valoarea proprietății lungime și mută elementele matricei la indecși mai mici sau mai mari, după cum este necesar. Ne vom uita la toate aceste metode puțin mai târziu.

Matrice multidimensionale

JavaScript nu acceptă matrice multidimensionale „adevărate”, dar oferă o modalitate bună de a le simula folosind matrice de matrice. Pentru a accesa un element de date dintr-o matrice de matrice, pur și simplu utilizați operatorul de două ori.

De exemplu, să presupunem că matricea variabilă este o matrice de matrice de numere. Fiecare element al matricei[x] este o matrice de numere. Pentru a accesa un anumit număr dintr-o matrice, puteți utiliza expresia matrice [x][y]. Mai jos este exemplu concret, unde o matrice bidimensională este folosită ca tabelă de înmulțire:

// Creați o matrice multidimensională var table = new Array(10); // Există 10 rânduri în tabel pentru (var i = 0; i

Metode ale clasei Array

Standardul ECMAScript 3 definește Array.prototype ca un set funcții convenabile pentru lucrul cu matrice, care sunt disponibile ca metode ale oricărei matrice. Aceste metode vor fi prezentate în următoarele subsecțiuni.

metoda join().

Metoda Array.join() convertește toate elementele matricei în șiruri de caractere, le unește și returnează șirul rezultat. Ca argument opțional, puteți trece un șir metodei care va fi folosită pentru a separa elementele din șirul rezultat. Dacă nu este specificat un șir delimitator, se folosește o virgulă. De exemplu, următorul fragment are ca rezultat șirul „1,2,3”:

Var arr = ; arr.join(); // "1,2,3" arr.join ("-"); // „1-2-3”

metoda reverse().

Metoda Array.reverse() inversează ordinea elementelor dintr-o matrice și returnează o matrice reordonată. Permutarea se realizează direct în matricea originală, adică. Această metodă nu creează o nouă matrice cu elementele reordonate, ci mai degrabă le reordonează într-o matrice deja existentă. De exemplu, următorul fragment, folosind metodele reverse() și join(), are ca rezultat șirul „3,2,1”:

Var arr = ; arr.reverse().join(); // "3,2,1"

metoda sort().

Metoda Array.sort() sortează elementele din tabloul sursă și returnează tabloul sortat. Dacă metoda sort() este apelată fără argumente, sortarea se face în ordine alfabetică (elementele sunt convertite temporar în șiruri de caractere pentru comparare dacă este necesar). Elementele nedefinite sunt mutate la sfârșitul matricei.

Pentru a sorta în altă ordine decât alfabetică, puteți trece o funcție de comparație ca argument la metoda sort(). Această funcție stabilește care dintre cele două argumente ale sale ar trebui să apară primul în lista sortată. Dacă primul argument trebuie să vină înaintea celui de-al doilea, funcția de comparare trebuie să revină un număr negativ. Dacă primul argument urmează să-l urmeze pe al doilea într-o matrice sortată, atunci funcția trebuie să returneze un număr mai mare decât zero. Și dacă două valori sunt echivalente (adică ordinea lor nu contează), funcția de comparație ar trebui să returneze 0:

Var arr = ; arr.sort(); // ordinea alfabetului: 1111, 222, 33, 4 arr.sort(funcție(a,b) ( // Ordine numerică: 4, 33, 222, 1111 întoarcere a-b; // Returnează valoarea 0 // în funcție de ordinea de sortare a lui a și b )); // Filtrează după direcție inversă, de la cel mai mare la cel mai mic arr.sort(function(a,b) (return b-a));

Observați cât de convenabil este să utilizați o funcție fără nume în acest fragment. Funcția de comparare este folosită doar aici, deci nu este nevoie să-i dea un nume.

metoda concat().

Metoda Array.concat() creează și returnează o nouă matrice care conține elementele matricei originale pe care a fost apelat concat() și valorile oricăror argumente transmise la concat(). Dacă oricare dintre aceste argumente este el însuși un tablou, elementele sale sunt adăugate la tabloul returnat. Trebuie remarcat, totuși, că transformarea recursiv a unui tablou de matrice în matrice unidimensională nu se intampla. Metoda concat() nu schimbă tabloul original. Mai jos sunt câteva exemple:

Var arr = ; arr.concat(4, 5); // Returnează arr.concat(); // Întoarce arr.concat(,) // Întoarce arr.concat(4, ]) // Întoarce ]

metoda slice().

Metoda Array.slice() returnează o porțiune, sau un subbary, din tabloul specificat. Cele două argumente ale metodei specifică începutul și sfârșitul fragmentului returnat. Matricea returnată conține elementul al cărui număr este specificat în primul argument, plus toate elementele ulterioare, până la (dar fără a include) elementul al cărui număr este specificat în al doilea argument.

Dacă este dat un singur argument, tabloul returnat conține toate elementele de la poziția de început până la sfârșitul matricei. Dacă oricare dintre argumente este negativ, acesta determină numărul elementului relativ la sfârșitul matricei. Deci, argumentul -1 corespunde ultimului element al tabloului, iar argumentul -3 corespunde celui de-al treilea element al tabloului de la sfârșit. Aici sunt cateva exemple:

Var arr = ; arr.slice(0,3); // Returnează arr.slice(3); // Returnează arr.slice(1,-1); // Returnează arr.slice(-3,-2); // Întoarcere

metoda splice().

Metoda Array.splice() este metoda universala, care inserează sau elimină elemente dintr-o matrice. Spre deosebire de metodele slice() și concat(), metoda splice() modifică tabloul original pe care a fost apelată. Rețineți că metodele splice() și slice() au nume foarte asemănătoare, dar efectuează operații complet diferite.

Metoda splice() poate elimina elemente dintr-o matrice, poate introduce elemente noi sau poate face ambele în același timp. Elementele matricei sunt deplasate după cum este necesar pentru a crea o secvență continuă după inserare sau ștergere.

Primul argument al metodei splice() specifică poziția din matrice din care se va efectua inserarea și/sau ștergerea. Al doilea argument specifică numărul de elemente care ar trebui eliminate (tăiate) din matrice. Dacă al doilea argument este omis, toate elementele matricei de la specificat până la sfârșitul matricei sunt eliminate. Metoda splice() returnează o matrice a elementelor eliminate sau (dacă niciun element nu a fost eliminat) o matrice goală.

Primele două argumente ale metodei splice() specifică elementele matricei care trebuie eliminate. Aceste argumente pot fi urmate de orice număr de argumente suplimentare care specifică elementele care urmează să fie inserate în matrice, începând de la poziția specificată în primul argument.

Var arr = ; arr.splice(4); // Return , arr = arr.splice(1,2); // Return , arr = arr.splice(1,1); // Întoarcere ; arr = arr = ; arr.splice(2,0,"a","b"); // Întoarcere ; arr =

metodele push() și pop().

Metodele push() și pop() vă permit să lucrați cu matrice ca și cum ar fi stive. Metoda push() adaugă unul sau mai multe elemente noi la sfârșitul matricei și returnează noua lungime. Metoda pop() o face operare inversă- elimină ultimul element al matricei, reduce lungimea matricei și returnează valoarea pe care a eliminat-o. Rețineți că ambele metode modifică matricea originală, mai degrabă decât să creeze o copie modificată a acesteia.

metodele unshift() și shift().

Metodele unshift() și shift() se comportă aproape la fel ca push() și pop(), cu excepția faptului că inserează și elimină elemente la începutul matricei, mai degrabă decât la sfârșit. Metoda unshift() mută elementele existente la indici mai mari pentru a elibera spațiu, adaugă elementul sau elementele la începutul matricei și returnează noua lungime a matricei. Metoda shift() elimină și returnează primul element al matricei, deplasând toate elementele ulterioare cu o poziție în jos pentru a ocupa spațiul liber la începutul matricei.

Să învățăm cum să indexăm tablourile în js, să eliminăm și să adăugăm elementele acestora.

O matrice în JavaScript este un obiect global conceput pentru a stoca o listă de valori.

Este similar cu alte variabile prin faptul că poate stoca orice tip de date. Dar matricea are una diferenta importanta dintr-o variabilă: poate stoca mai mult de un element simultan.

Un tablou este o colecție ordonată de valori. Fiecare valoare se numește element și are propriul său număr, numit index.

Un element din interiorul unui tablou poate fi de orice tip. Mai mult, elementele unei matrice pot fi de diferite tipuri: numere, șiruri, porți logiceși chiar obiecte sau alte matrice.

Ordinea elementelor matricei începe de la 0. Se pare că tabloul va avea întotdeauna un index compensat cu unu: primul element va avea indicele 0, al doilea 1 etc.

Iată un exemplu de matrice cu elemente de diferite tipuri:

Crearea (declararea) unui tablou

Matricele sunt foarte convenabile deoarece pot stoca atâtea date câte aveți nevoie. Dimensiunea maximă posibilă a unui tablou js este de 2 32 de elemente.

Trebuie să spunem JavaScript că vrem să creăm o matrice. Există două opțiuni pentru aceasta: valoarea între paranteze drepte sau cuvânt cheie nou.

Notare scurtă: folosind paranteze pătrate

O listă de valori separate prin virgulă, cuprinsă între paranteze drepte.

var myArray = [ "Jack", "Sawyer", "John", "Desmond" ];

Conținutul matricei este determinat de ceea ce se află între paranteze drepte. Fiecare valoare este separată prin virgulă.

Valorile sunt specificate în același mod ca și variabilele simple, adică șirurile de caractere trebuie declarate între ghilimele etc.

Pentru a declara o matrice goală, lăsați parantezele goale:

var myArray = ;

Intrare lungă: folosind constructorul Array().

var lostArray = new Array ("Jack", "Sawyer", "John", "Desmond"); var twinPeaksArray = new Array("Laura", 2, ["Bob", "Leland", "Dale"]);

Noul cuvânt cheie îi spune JavaScript să creeze o nouă matrice ale cărei valori sunt transmise ca parametri.

Dacă știți dinainte câte elemente vor fi în tabloul dvs., puteți trece imediat această valoare în constructor.

var myArray = new Array(80);

Expresia de mai sus va crea o matrice goală constând din 80 de sloturi cu valori nedefinite.

Declararea unui tablou gol:

var myArray = new Array();

Accesarea elementelor de matrice

Folosind indexul fiecărui element, puteți lucra cu orice date din matrice, accesând-o folosind operatorul:

var myArray = ["Jack", "Sawyer", "John", "Desmond"]; console.log(myArray); // Imprimă „Jack” console.log(myArray); // Tipărește „Desmond”

O matrice poate avea mai multe niveluri, adică fiecare element poate fi el însuși o matrice. Rezultatul va fi o matrice js bidimensională. Cum putem accesa aceste matrice care se află în interiorul altora - „ tablouri multidimensionale»?

Ca exemplu, să considerăm o matrice care reprezintă o familie. Copiii din această familie sunt înregistrați într-o matrice separată în interiorul celei principale:

var familyArray = ["Marge", "Homer", ["Bart", "Lisa", "Maggie"]];

Vă puteți imagina așa:

Pentru a face referire la valoarea „Lisa”:

var lisa = familyArray; console.log(lisa); // afișează „Lisa”

Acest lucru poate fi continuat aproape la nesfârșit, ceea ce vă permite să stocați seturi de date imbricate în matrice și să le accesați folosind indecși.

Adăugarea de elemente la o matrice

Ne-am dat seama cum să accesăm elementele matricei folosind indicii lor corespunzători. Într-un mod similar, puteți adăuga (sau modifica) elemente declarând, de exemplu:

var myArray = ["Kate", "Sun"]; myArray = „Juliet”; console.log(myArray); // Tipărește „Kate, Sun, Juliet”

Ce se întâmplă dacă declar un element cu un index care nu are alte elemente înaintea lui? Matricea în sine va crea toate elementele lipsă și le va atribui valoarea nedefinită:

var myArray = ["Kate", "Sun"]; myArray = „Juliet”; console.log(myArray.length); // Tipărește „6” console.log(myArray); // Tipărește ["Kate", "Sung", nedefinit, nedefinit, nedefinit, "Juliet"]

Puteți afla care este lungimea unui tablou js folosind proprietatea length. În exemplul de mai sus, există șase elemente în matrice, iar trei dintre ele nu au primit o valoare - sunt marcate ca nedefinite.

metoda push().

Folosind metoda push(), puteți adăuga unul sau mai multe elemente la o matrice js. Push() acceptă suma nelimitata parametrii, toți vor fi adăugați la sfârșitul matricei.

var myArray = ["Kate", "Sut"]; myArray.push("Juliet"); // Adaugă elementul „Juliet” la sfârșitul matricei myArray.push(“Libby”, „Shannon”); // Adaugă elementele „Libby” și „Shannon” la sfârșitul matricei console.log(myaArray ); // Tipărește ["Kate", "Soon", "Juliet", "Libby", "Shannon"]

metoda unshift().

Metoda unshift() funcționează la fel ca push(), cu excepția faptului că adaugă elemente la începutul matricei.

var myArray = ["Kate", "Sun"]; myArray.unshift(„Juliet”); // Adaugă elementul "Juliet" la începutul matricei myArray.unshift("Libby", "Shannon"); // Adaugă elementele „Libby” și „Shannon” la începutul matricei console.log(myArray); // Iese ["Libby", "Shannon", "Juliet", "Kate", "Soon"]

Eliminarea elementelor de matrice

metodele pop() și shift().

Metodele pop() și shift() elimină ultimul și, respectiv, primul element al unui tablou:

var myArray = ["Jack", "Sawyer", "John", "Desmond", "Kate"]; myArray.pop(); // Îndepărtează elementul „Kate” myArray.shift(); // Îndepărtează elementul „Jack” console.log(myArray); // Tipărește ["Sawyer", "John", "Desmond"]

metoda splice().

Folosind metoda splice(), puteți elimina sau adăuga elemente într-o matrice, specificând în același timp cu precizie indexul elementelor.

În exemplul următor, metoda splice() adaugă două elemente începând cu indexul 2 ( adică din al treilea element):

var fruitArray = ["măr", "piersică", "portocală", "lămâie", "lime", "cireș"]; fruitArray.splice(2, 0, "pepene galben", "banana"); console.log(fruitArray); // Iese ["măr", "piersică", "pepene", "banana", "portocală", "lămâie", "lai verde", "cireș"]

Primul parametru al metodei splice() este indexul. Indică în ce poziție trebuie adăugate/înlăturate elementele. În exemplul nostru, am ales indicele 2 ( adică „portocaliu”).

Al doilea parametru este numărul de elemente care trebuie eliminate. Am specificat o valoare de 0, deci nimic nu va fi șters.

Următorii parametri sunt opționali. Ele adaugă noi valori matricei. În cazul nostru, trebuie să adăugăm „pepene” și „banană”, începând cu indicele 2.

Ce este o matrice

O matrice este un tip de date care stochează valori numerotate. Fiecare valoare numerotata se numeste un element de matrice, iar numarul cu care este asociat elementul se numeste index. Matricele JavaScript sunt netipizate, ceea ce înseamnă că un element al unei matrice poate fi de orice tip, iar elementele diferite ale aceleiași matrice pot avea tipuri diferite. În plus, matricele JavaScript sunt dinamice, ceea ce înseamnă că nu este nevoie să declarați o dimensiune fixă ​​și pot fi adăugate elemente noi în orice moment.

Crearea unui Array

O matrice poate fi creată în două moduri, primul este de a crea o matrice folosind un literal de matrice - paranteze pătrate, în interiorul căruia există o listă de elemente separate prin virgule.

Var gol = ; //matrice goală var numere = ; //matrice cu 5 elemente numerice var diff = ; //matrice cu 3 elemente tipuri variate

Valorile nu trebuie să fie simple (numere sau șiruri de caractere) - pot fi și orice alte expresii, de exemplu: literale obiect, alte matrice sau funcții.

Var num = 700; var tab = , num + 1];

A doua modalitate de a crea o matrice este apelarea constructorului Array(). Există trei moduri de a apela constructorul Array().

  • Apelarea unui constructor fără argumente:
var b = nou Array();

În acest caz, este creată o matrice goală, echivalentă cu un literal gol.

  • Constructorul specifică în mod explicit valorile n elemente ale matricei:
var b = new Array(1, 3, 5, 8, „șir”, adevărat);

În acest caz, constructorul primește o listă de argumente, care devin elemente ale noii matrice. Argumentele sunt scrise în matrice în ordinea în care sunt specificate.

  • Alocarea de spațiu pentru alocarea ulterioară a valorilor. Acest lucru se face prin specificarea unui singur număr între paranteze atunci când definiți o matrice:
var b = nou Array(5);

Această metodă de definire a unei matrice implică alocarea matricei a unui anumit număr de elemente (fiecare dintre ele are valoarea nedefinită) și apoi atribuirea de valori pe măsură ce scriptul progresează. Această formă este de obicei folosită pentru a pre-aloca o matrice dacă lungimea sa este cunoscută dinainte.

Citirea, scrierea și adăugarea elementelor de matrice

Elementele matricei sunt accesate cu ajutorul operatorului. Elementele matrice din JavaScript sunt numerotate începând de la zero. Pentru a obține elementul de matrice dorit, trebuie să indicați numărul acestuia între paranteze drepte.

Var numere = ; document.write(numerele + ", "); //primul element al tabloului document.write(numbers + ", "); //al doilea element al matricei document.write(numbers + ", "); //al treilea element al tabloului document.write(numbers); //al patrulea element al tabloului

Elementele matricei pot fi modificate:

Var numere = ; numere = 10; //am schimbat primul element al matricei -

A adauga element nou matrice, atribuiți doar o nouă valoare:

Var numere = ; numere = 7; //a devenit

Notă: în Matrice JavaScript pot fi stocate orice număr de elemente de orice tip.

Lungimea matricei

Toate tablourile, indiferent dacă sunt create folosind constructorul Array() sau definite folosind un literal de matrice, au o proprietate specială de lungime care returnează numărul total elementele stocate într-o matrice. Deoarece tablourile pot avea elemente nedefinite (cele cu valoarea nedefinite), o formulare mai precisă este aceea că proprietatea lungime este întotdeauna cu unul mai mare decât cel mai mare indice (număr) al elementului de matrice. Proprietatea lungime este actualizată automat, rămânând corectă pe măsură ce noi elemente sunt adăugate în matrice.

Var v = nou Array(); // v.length == 0 (nu este definit niciun element) v = new Array(1,2,3); // v.lungime == 3 (elementele 0–2 definite) v = ; // v.length == 2 (elementele 0 și 1 sunt definite) document.write(v.length);

Pentru a obține ultimul element al unui tablou, puteți utiliza și proprietatea length:

Var v = ["JavaScript", "Proprietate", "Matrice"]; document.write(v);

Ultimul element are un indice cu 1 mai mic decât lungimea matricei, deoarece numărarea începe de la zero. Prin urmare, dacă nu cunoașteți numărul exact de elemente, dar trebuie să vă referiți la ultimul element al matricei, utilizați intrarea: v.length - 1.

Buclă prin elementele matricei

Cea mai obișnuită utilizare a proprietății lungimi este de a bucla prin elementele matricei:

Acest exemplu presupune că elementele matricei sunt învecinate și încep de la primul element (index 0). Dacă nu este cazul, înainte de a accesa fiecare element al matricei, trebuie să verificați dacă este definit:

Fructe var = ["măr", "banana", "căpșuni", "piersici"]; pentru(var i = 0; i

O buclă poate fi folosită și pentru a inițializa elementele matricei:

Var bar = new Array(10); pentru(var i = 0; i

Trunchierea și creșterea unei matrice

Când lucrați cu matrice, proprietatea lungimii este actualizată automat, astfel încât să nu ne facem griji noi înșine. Dar un lucru demn de menționat este că proprietatea lungime este disponibilă nu numai pentru citire, ci și pentru scris. Dacă proprietatea lungime este setată la o valoare mai mică decât cea actuală, matricea este trunchiată la noua lungime (specificată), orice elemente care nu se încadrează în noul interval de index sunt aruncate și valorile lor sunt pierdute, chiar dacă lungimea este returnate ulterior, valorile nu vor fi restaurate.

Var foo = ; foo.lungime = 1; //scurta la 1 element - foo.length = 4; //restaurează numărul anterior de elemente document.write(foo); //fără valoare anterioară

Cel mai într-un mod simpluștergerea matricei va fi: foo.length = 0.

Dacă proprietatea lungime este mai mare decât valoarea sa curentă, noi elemente nedefinite vor fi adăugate la sfârșitul matricei, crescând matricea la dimensiunea specificată.

Eliminarea elementelor de matrice

Operatorul de ștergere scrie valoarea nedefinită într-un element de matrice, în timp ce elementul în sine continuă să existe. Pentru a elimina elemente astfel încât elementele rămase să fie mutate în spațiul liber, trebuie să utilizați una dintre metodele de matrice predefinite. Metoda Array.shift() elimină primul element al matricei, pop() elimină ultimul element al matricei, splice() elimină unul sau o serie de elemente oriunde în matrice. Modul de utilizare a acestor metode va fi descris în detaliu în capitolul următor.

Matrice multidimensionale

Amintiți-vă că matricele JavaScript pot conține alte matrice ca elemente. Această caracteristică poate fi folosită pentru a crea tablouri multidimensionale. Pentru a accesa elemente dintr-o matrice de matrice, trebuie să utilizați doar paranteze pătrate de două ori.

Var matrice = [ , , ]; document.write(matrice); //element central selectat

Să ne uităm la ceea ce este scris în exemplu: matricea este o matrice de matrice de numere. Orice element al matricei[n] este o matrice de numere. Pentru a accesa un anumit număr dintr-o matrice, trebuie să scrieți matrice[n][n], a doua paranteză pătrată indică indicele elementului matricei interne.

//analog cu intrarea anterioară - creare folosind constructorul var table = new Array(3); pentru(var i = 0; i

Matrice asociative

Obiectele pot fi folosite ca tablouri asociative. Puțină teorie - tablourile asociative (numite și tabele hash) vă permit să utilizați șiruri de caractere în loc de indecși. Utilizarea tablourilor asociative este foarte asemănătoare cu utilizarea unui nume de proprietate obiect obișnuit, dar în în acest caz, atunci când lucrați în format matrice. Deoarece JavaScript nu are metode de lucru cu tablouri asociative, acestea sunt folosite mult mai puțin frecvent decât cele obișnuite, deși pot fi la fel de bine utile pentru stocarea informațiilor și pentru a ușura amintirea elementelor care trebuie accesate.

Var s_list = obiect nou(); s_list["fat"] = "Grăsime"; s_list["small"] = "Mic"; s_list["name"] = "Homer"; pentru (var x în s_list) //afișează toate elementele document.write(s_list[x] + "
");

În acest articol ne vom uita la o matrice JavaScript și componentele sale. JavaScript este proiectat ideal pentru programare. De fapt, implementează limbajul ECMAScript (standard ECMA-262).

Unde este folosit JavaScript? Este folosit ca limbaj încorporat pentru a defini calea unui program către un subiect de aplicație. Poate fi găsit în browsere unde este folosit ca limbaj de scripting care face paginile web interactive.

Cele mai importante caracteristici arhitecturale ale acestui produs sunt tastarea dinamică și slabă, gestionarea automată a memoriei, programarea perfectă și funcțiile obiectelor de primă clasă.

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

Trebuie remarcat faptul că JavaScript este o marcă înregistrată a Oracle Corporation.

Ce este o matrice?

Un tablou este unul care stochează valori numerotate. Fiecare astfel de valoare este numită componentă de matrice, iar cifra căreia este asociată componenta se numește index. Matricea JavaScript este netipificată. Aceasta înseamnă că elementele matricei pot fi de orice tip și diverse detalii, aparținând aceleiași matrice, au 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 limbaj JavaScript, crearea unei matrice nu este deloc dificilă. Există două metode pentru aceasta. Primul implică crearea 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 = ; //matrice cu cinci componente digitale;
  • var diff = ; //matrice cu trei elemente de tipuri diferite.

De obicei, valorile de aici nu trebuie să fie simple (șiruri și numere). Poate fi, de asemenea, orice alte expresii, 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ă argumente: var b - new 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 transformate în componente ale unei noi matrice. Argumentele sunt scrise în matrice în locația în care sunt specificate.
  • Definirea zonei pentru atribuirea ulterioară a valorilor. Acest lucru se face prin specificarea când se identifică o matrice dintr-un singur număr inclus în paranteze rotunde: var b = nou Array(5). Aceasta metoda detectarea implică alocarea unei matrice cantitatea necesară componente (fiecare dintre care este listată ca nedefinită) cu posibilitatea de a atribui ulterior valori în timpul procesului de prezentare. Acest formular este de obicei folosit pentru a pre-aloca o matrice Javascript a cărei lungime este cunoscută dinainte.

Scrierea, citirea și adăugarea detaliilor matricei

Puteți accesa componentele unei matrice folosind operatorul. Apropo, toate componentele din JavaScript, începând de la zero, sunt numerotate. Pentru a obține elementul necesar, numărul acestuia este indicat î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 că lungimea unui tablou este în general un fenomen interesant. Să aruncăm o privire mai atentă. Toate tablourile, indiferent dacă sunt construite folosind designerul Array() sau dezvăluite printr-un literal de matrice, au o proprietate de lungime specifică care indică numărul total de elemente stocate. Deoarece o matrice poate conține părți nedefinite (notate cu nedefinit), o expresie mai precisă este: calitatea lungimii este întotdeauna cu unul mai mare decât cea mai mare camera mare(index) al unei componente de matrice. Calitatea lungimii este ajustată automat, rămânând precisă atunci când apar piese noi în matrice.

Pentru a face să apară componenta finală a matricei, puteți utiliza proprietatea length.

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. Deci, dacă nu știți câte ar trebui să fie, dar trebuie să accesați elementul final al matricei, trebuie să utilizați notația: v.length - 1.

Iterarea asupra detaliilor matricei

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

  • fructe var = [„căpșuni”, „piersici”, „măr”, „banane”];
  • pentru(var I = 0; i< fruits.lenght; i++);
  • document.write(fructe[i] + "...").

În acest exemplu, componentele par a fi plasate continuu și încep cu prima parte deținând un indice de zero. Dacă nu este cazul, înainte de a apela fiecare element al matricei, trebuie să verificați dacă este definit.

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

Creșteți și trunchiați o matrice

Mă întreb cum se folosește limba Șir JavaScript adăugați la matrice? Pe măsură ce lucrăm cu matrice, lungimea calității se îmbunătățește automat, motiv pentru care trebuie să avem grijă de asta. Este necesar să ne amintim un detaliu - proprietatea lungimii nu este doar lizibilă, 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 dimensiunea 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 părți neidentificate vor apărea la sfârșitul matricei, ceea ce o va crește la dimensiunea dorită.

Îndepărtarea pieselor de model

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

Matrice multidimensionale

Se pare că am rezolvat puțin lucrurile Matrice bidimensionale- asta trebuie luat în considerare în continuare. Vă amintiți că matricele JavaScript pot conține și alte elemente ca componente? Această caracteristică este utilizată pentru a produce matrice multidimensionale. Pentru a vizita componente dintr-o serie de matrice, pur și simplu utilizați paranteze pătrate de două ori.

Matrice 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ă lor, șirurile sunt folosite în loc de indecși. Utilizarea unor astfel de constructe este similară cu utilizarea numelui proprietății unui obiect simplu, dar în această opțiune la efectuarea lucrărilor în format matrice. Deoarece JavaScript nu are modalități de a opera cu tablouri asociative, acestea sunt folosite mult mai puțin frecvent 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

Ce vom învăța acum despre JavaScript? Afișarea matricei î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. În mod interesant, variabila pentru contor reguli este folosită ca index al unei componente de matrice.

Curatenie

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

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

Adăugarea și îndepărtarea componentelor

Ei bine, să continuăm să studiem acest lucru în continuare. cel mai interesant limbaj JavaScript. Un element de matrice poate fi șters sau 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 modifica calitatea lungimii, iar modificarea proprietății lungime poate elimina calitățile numerice. În principiu, algoritmul pentru setarea calităților pentru matrice este următorul:

  • Când se adaugă o proprietate digitală necunoscută i, dacă lungimea este egală sau mai mică decât i, lungimea este definită a fi i+1.
  • Când calitatea își schimbă lungimea, 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, ștergerea unui element dintr-o matrice JavaScript nu este dificilă. La urma urmei, chiar și atunci când setați lungimea, trebuie să eliminați componentele „extra” din ea. Acest lucru duce la opțiunea de ștergere a matricei. Dacă dintr-un motiv oarecare variabila alocată unei matrice noi goale nu este satisfăcătoare și este necesară resetarea celei curente, 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 oameni recomandă utilizarea metodelor încorporate pentru aceasta. Această nuanță este cea care garantează valoarea corectă a calității lungimii și absența golurilor în matrice. Apropo, calitatea corectă a lungimii va corespunde numărului de componente.

Metoda push mută părțile trecute la sfârșitul matricei. Metoda pop redă componenta finală și o elimină.

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

Adăugarea și eliminarea pieselor în mijlocul unui tablou

Dacă trebuie să șterg o matrice JavaScript, ce ar trebui să fac? Metoda splice este cunoscută ca având semnătura Array.prototype.splice.

Îndepărtează componentele deleteCount din matrice, începând cu indicatorul de pornire. Dacă sunt transmise mai mult de două argumente, atunci toate argumentele ulterioare din matrice sunt plasate în locul celor eliminate. Dacă startul este negativ, atunci indicele de la care se va relua retragerea va fi egal cu lungimea + start. Matricea este returnată din elementele eliminate.

De fapt, folosind metoda splice, puteți elimina componente din mijlocul matricei sau puteți adăuga orice număr de componente oriunde în matrice.

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

În principiu, al doilea parametru al metodei splice este opțional, dar comportamentul unei funcții cu un argument este diferit în fiecare browser.

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

Nicio componentă nu va fi eliminată în IE. În primele variații ale Operei, este imposibil să se prezică comportamentul - va fi eliminată o parte cu începutul indexului - 1. Prin urmare, este întotdeauna necesar să aceasta metoda trece cel puțin două componente.

Chei

Desigur, atunci când învățați JavaScript, ar trebui să aveți în vedere și tablourile asociative, așa cum am menționat mai devreme. Acesta este un tip abstract de informații (o interfață pentru o stocare 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 ștergerea și căutarea unei perechi prin cheie:

GĂSIȚI (cheie).

INSERT (valoare, cheie).

ELIMĂ (cheie).

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

Astfel, acțiunea FIND (cheie) returnează valoarea asociată cu cheia dată sau un anumit obiect UNDEF care indică faptul 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 punct de vedere al interfeței, este convenabil să se considere o matrice asociativă ca o matrice simplă în care nu numai numere întregi, ci și valori de alte tipuri - de exemplu, șiruri - pot fi folosite ca indici.

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

Exemplu matrice asociativă poate servi carte de telefoane. În această versiune, semnificația este complexul „F. I. O. + adresa”, iar cheia este numărul de telefon. unu 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:

  • FIECARE - „treceți prin” toate perechile 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.

Ultimele două opțiuni necesită ca tastele să indice acțiunea de comparare.

Implementări de tablouri asociative

Există multe implementări diferite ale unui tablou asociativ. Cea mai comună implementare s-ar putea baza pe o matrice simplă ale cărei componente sunt perechi (valoare, cheie). A mari viteza acțiuni de căutare puteți comanda componentele unei matrice date după cheie și o găsiți folosind Dar acest lucru va crește perioada de timp necesară pentru a adăuga o nouă pereche, deoarece va fi necesar să „depărtați” componentele matricei pentru a împacheta o înregistrare nouă în celula goală care apare.

Cele mai cunoscute implementări sunt cele bazate pe diferiți arbori de căutare. De exemplu, într-un cititor C++ STL tipic, containerul hărții este implementat pe baza unui arbore de mahon negru. Stilurile Ruby, Tcl, Python folosesc un tip de tabel hash. Există și alte implementări.

În general, fiecare implementare are propriile sale dezavantaje și avantaje. Este important ca toate cele trei acțiuni să fie efectuate atât în ​​medie, cât și în cea mai proastă nuanță pe perioada 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ă implementările bazate pe tabelul hash au un timp mediu de O(1), care este mai bun decât implementările bazate pe arborele de căutare. Desigur, acest lucru nu garantează execuția de mare viteză a operațiunilor individuale: timpul de INSERT în cel mai rău caz este notat cu O(n). Procesul INSERT rulează o perioadă lungă de timp când factorul de umplere atinge punctul cel mai înalt și indexul tabelului hash trebuie reconstruit.

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