JavaScript-matrice și crearea sa.

În acest articol ne vom uita la JavaScript-matrice, componentele sale.JavaScript este un limbaj de scripting perfect orientate, creat pentru programare.De fapt, el își dă seama limba (standard ECMA-262) ECMAScript.

În cazul în care pentru a utiliza JavaScript?Este folosit ca un limbaj încorporat pentru a determina calea către aplicația software subiect.Acesta poate fi găsit în browser: este folosit acolo ca un limbaj de scripting care oferă interactivitate de pagini web.

caracteristici importante arhitecturale ale acestui produs sunt dactilografiere dinamice și slab, memorie avtoupravlenie, funcții de programare ideale, care sunt obiecte de prima categorie.

fapt, in JavaScript afectat diferite motive, pentru că dezvoltarea ar crea un limbaj similar cu Java, dar usor de utilizat de către programatori.Apropo, limba JavaScript nu deține orice companie sau organizație care face diferit de la un număr de stiluri de programe folosite de dezvoltatori web.

Rețineți că JavaScript - o marcă înregistrată a Oracle Corporation îngrijorare.

Ce este un tablou?

date numit Array tip care stochează valori numerotate.Fiecare astfel de valoare este menționată ca o componentă de matrice, și numărul la care o componentă este denumită indicele.Matrice JavaScript-netipizat.Acest lucru înseamnă că detaliile matrice poate avea orice tip, cu diverse obiecte care aparțin aceluiași matrice, au stiluri complet diferite.

plus, JavaScript-matrice este dinamic, si se spune ca o dimensiune fixă ​​nu este nevoie de a declara.După adăugarea de noi piese, în orice moment.Matrice

Manufacturing

Folosirea limbii JavaScript, pentru a crea un tablou destul de dificil.Există două metode pentru aceasta.Prima implică producția de o serie folosind o literală - de paranteze drepte, în interiorul căruia este plasată o listă de articole, împărțit prin virgule.

  • var gol = [];// Array gol;
  • numers = var [4, 1, 2, 5];// Tablou cu cinci componente digitale;
  • var dif = [1,5, fals, "text"];// Matrice cu trei elemente de diferite tipuri.

De obicei, nu există nici o cerință că valorile erau simple (și număr de linie).Acesta poate fi, de asemenea, orice alte expresii, de exemplu, sub rezerva literale alte funcții și matrice.

doilea mod de a crea o serie de designer este de a apela Array ().Îl invită trei metode:

  • Apelarea de designer fara argumente: var b - new Array ().Acesta prevede crearea unei matrice echivalent gol literal gol [].
  • Designer a indica în mod clar valoarea n componente matrice: var b = new Array (1, 3, 5, 8, "o linie», adevărat).În acest caz, proiectantul a prezentat o listă de argumente, care sunt transformate în componente ale noii matrice.Argumentele sunt scrise la gama este locul unde este indicat.
  • de încadrare pentru atribuirea ulterioară valori.Acest lucru se face prin specificarea gama de detecție de numere intre paranteze: var b = new Array (5).Această metodă de detectare presupune alocarea unui tablou de numărul necesar de componente (fiecare dintre acestea este listat ca nedefinit) cu posibilitatea de atribuirea de valori în procesul de discuții.Acest formular este de obicei folosit pentru a pre-aloce Javascript-matrice a cărui lungime este cunoscută în avans.

scris, citit si piese de adăugarea matrice

ajunge componentele matrice, puteți utiliza [] operatorul.De altfel, toate componentele din JavaScript, începând cu zero numerotate.Pentru a obține elementele necesare, numărul său este indicat între paranteze.Ca o regulă, articole pot fi schimbate.Un JavaScript pentru a adăuga la matrice, aveți nevoie pentru a atribui o nouă valoare.

Trebuie remarcat faptul că, în matrice JavaScript poate stoca orice număr de elemente de orice fel.

Lungimea

Deci, noi știm ce JavaScript.Lungimea șirului, în general, este un fenomen interesant.Să ne considera mai detaliat.Toate gamele sunt concepute de un designer de Array (), precum și a identificat datorită unui array literal pentru a avea o lungime de proprietate specific, care reamintește numărul total de elemente sunt păstrate.Deoarece matricea poate fi incert cu privire la detaliile (notate cu nedefinit), o expresie mai precisă sună atât: lungime Calitatea este întotdeauna mai mare de o decât cel mai mare număr de matrice (index) componente.Lungime Calitatea este ajustată automat, stau corecte la apariție într-o serie de piese noi.

ajuns la componenta finală a matrice, puteți utiliza lungimea caracteristică.

ultim element are un indice este unul mai puțin decât dimensiunea de matrice.După numărarea întotdeauna începe de la zero.Oh, acest JavaScript!Lungimea șirului aceasta depinde de numărul exact de articole.Prin urmare, dacă nu știi cât de mult ar trebui să fie, dar ai nevoie să apeleze la elementul final de matrice, trebuie să se aplice de înregistrare: v.length - 1.

părți Bust serie

Foarte des, proprietatea lungime este folosit pentru a repeta pe gama de piese din ciclul:

  • fructe var = [«Strawberry", "piersica", "Apple", "banana"];
  • pentru (var i = 0; i & lt; fruits.lenght, i ++);
  • document.write (fructe [i] + «...»).

În acest exemplu, se pare că componentele sunt plasate în mod continuu și să înceapă cu prima parte, care detine indicele zero.Dacă nu, înainte de a apela fiecare element al tabloului trebuie verificată, dacă aceasta este definită.Ciclu

este, de asemenea, uneori, folosit pentru a inițializa componentele.

Zoom și trunchiere matrice

întreb cum folosind limbajul JavaScript intr-o gama șir pentru a adăuga?În procesul de lucru cu matrice, lungimea lungimea îmbunătățește automat calitatea, motiv pentru care trebuie să vă faceți griji despre asta tine.Este necesar să ne amintim despre un detaliu - proprietatea lungimea nu este read-only este disponibil, dar pentru înregistrare.Dacă atributul lungime la calitatea valorii care dă mărimea curentului, atunci matrice este redus la o valoare predeterminată.Orice componente care nu sunt incluse în noua gamă de indici, înclinare, și valorile lor sunt pierdute, chiar dacă mai târziu se întoarcă înapoi lungime - nu fi restaurat.

foarte ușor de curățat, deoarece matrice: foo.length = 0.

cazul în care calitatea de lungime alerga mai mare decât valoarea sa actuală de la sfârșitul tabloului va fi elemente noi, neidentificate că va crește la dimensiunea dorită.

piese Scoaterea serie

șterge operatorul specifică matrice componenta a nedefinit, dar continuă să existe în acest caz.Dacă trebuie să eliminați un element de activarea JavaScript-matrice, astfel încât celelalte părți au fost strămutate pentru un loc, trebuie să utilizați una dintre metodele de a prezice matrice.Metoda Array.shift () elimină prima componentă, pop () - ingredientul finală, iar îmbinarea metoda () - unul sau o serie de componente oriunde în matrice.

multidimensională Arrays

că am înțeles un pic despre ceea ce JavaScript.Matrice bidimensionale - care trebuie să fie abordate în continuare.Îți amintești că tablouri JavaScript fi componente pot conține alte elemente?Această funcție este utilizată pentru producerea de matrice multidimensionale.Pentru a vizita ingredientele într-o serie de matrice este suficient să se aplice paranteze de două ori.

asociativă tablouri

Acum, vom invata cum sa folositi JavaScript marcă tablouri asociative.Pentru a face acest lucru, avem nevoie să se uite în teoria: tablouri asociative sunt uneori numit un tabel hash.Datorită ei, indicii utilizate linie.Utilizarea unor astfel de structuri care amintesc de utilizarea denumirii de proprietățile unui obiect simplu, dar în acest exemplu de realizare, atunci când se lucrează într-un format matrice.Ca și în JavaScript nu există modalități de a opera tablouri asociative, acestea sunt utilizate mult mai puțin frecvent decât de obicei.Ar trebui remarcat faptul că ei încă mai pot fi utile pentru stocarea de date și pentru a simplifica stocarea pieselor la care doriți să le accesați.

ieșire serie

Și acum vom studia în JavaScript?Ieșirea dispozitivului pana la caseta de dialog (pe ecran), iar valorile de ieșire ale componentelor matricei.

Dacă programul pe care doriți să afișați valorile tuturor componentelor, atunci este convenabil să se aplice instrucțiunile pentru.Interesant, variabila-counter este utilizat în normele pentru această matrice componente indice.

chimică

Pentru a filtra serie de JavaScript, trebuie să resetați lungimea:

  • var myArray = [1, 2, 5, 23];
  • myArray.length = 0.

următor prezintă punerea în aplicare de destinație clară (), într-un cadru JavaScript-, prototip:

  • clar: function () {;
  • this.length = 0;
  • returnați;
  • }.

Adăugarea și îndepărtarea de componente

Ei bine, vom continua să exploreze în continuare această limbă interesant JavaScript.Element Array și pot fi eliminate și se adaugă, în același mod ca și proprietățile convenționale ale altor obiecte.Dar există unele diferențe: în timp ce adăugarea proprietăților numerice poate schimba calitatea de lungime, și modificarea proprietății lungime poate fi dispusă de calitate numerice.În principiu, stabilirea calități în astfel de matrice algoritmul este:

  • Când adăugați proprietățile necunoscute ale i digitale, în cazul în care lungimea este egală sau mai mică de i, lungime este determinată ca fiind i + 1 ,.
  • Când modificați calitatea de lungime, după cum urmează: în cazul în care valoarea atribuită este mai mică de zero, atunci aruncă RangeError.Lichidat toate indexurile calitate numerice care sunt egale cu lungimea noul, și mai mare decât.

elimina general elementul de activarea JavaScript-matrice este ușor.La urma urmei, chiar setarea lungimii, este necesar, pentru a elimina din componentele "extra".Prin urmare, opțiunea de curățare în matrice.Dacă variabila este atribuit un nou array gol pentru un motiv oarecare, nu sunt îndeplinite, și este necesar pentru a reseta curent, calitatea acestuia este suficientă pentru a atribui o valoare de lungime zero.Metode

unshift, schimbare, pop și împingeți

ciuda faptului că părțile componente ale matricei sunt modificate manual, mulți recomanda acest pentru a aplica built-in metode.Este această nuanță garantează valoarea corectă a calității și lipsa de lungime trece matrice.Apropo, lungimea corectă de calitate va potrivi cu numărul de componente.Metoda împinge

se mută la sfârșitul matrice a trecut la detalii.Metoda pop dă înapoi la componenta finală și îl elimină.

În general, în Internet Explorer, sub opta versiune unshift poate întoarce nedefinit, în alte browsere - noua valoare a lungimii.Deci, pe valoarea de retur de la unshift este mai bine să nu sper.

Adăugarea și eliminarea pieselor în mijlocul matrice

Dacă doriți să ștergeți o serie de JavaScript, trebuie să luați?Este cunoscut faptul că metoda are un Array.prototype.splice lipitură semnătură.

El se retrage din componentele matrice deleteCount, începând cu pornire index.Dacă ați transferat mai mult de două argumente, toate argumentele următoare sunt plasate în matrice în loc de lichidat.Dacă start este minus, indicele pentru a relua retragerea va fi egală cu lungimea + începe.Returnează o serie de elemente vine de la telecomandă.

De fapt, folosind metoda lipitură, componentele pot fi scoase din mijlocul matrice, sau adăuga orice număr oriunde în matrice.

În cazul cel mai simplu, dacă aveți nevoie pentru a elimina o componentă cu indicele i, trebuie să solicite metoda matrice îmbinare cu parametrii I și 1

În principiu, a doua opțiune de la metoda de îmbinare nu este obligatorie, dar comportamentul de un argument în fiecare alt browser.

De exemplu, în Firefox, în ultimele variațiile Opera, Safari și în în Chrome toate elementele vor fi retrase înainte de sfârșitul matrice.

în IE nu va lichidat orice componentă.Prima Variația este imposibil de prezis comportamentul Opera - va fi eliminat-o singură bucată cu start index - 1. Prin urmare, ar trebui să treacă întotdeauna în metoda cel puțin două componente.

Keys

Desigur, de învățare JavaScript, tablouri asociative, după cum sa menționat mai devreme, trebuie să nu pierdem din vedere, de asemenea, de.Aceasta este o tip abstract de informații (interfața cu depozitul de date), care vă permite să salvați perechi de forma "(cheie, valoare)" și se adaugă o pereche de operațiuni de sprijin, precum și a șterge și de căutare pentru perechi de chei:

- GASITI (cheie).

- INSERT (valoare, cheie).

- Îndepărtați (cheie).

Se crede că în matrice asociativă imposibilitatea de a salva două perechi cu aceeași cheie.În câteva K + v valoare numită asociat cu k cheie.Semantica și nume de mai sus operațiuni în diverse implementări ale acestor tablouri pot fi diferite.

Astfel, efectul de FIND (cheie) întoarce valoarea asociată cu o anumită cheie, sau o UNDEF anumit obiect, ceea ce înseamnă că valoarea asociată cu o anumită cheie lipsește.Două alte acțiuni nu se întoarcă nimic (cu excepția datelor care le-ați executat cu succes această tranzacție).

general, din punct de vedere al interfeței, care este o matrice asociativă considerat ca o matrice simplă, în care ca indici poate fi aplicată nu numai la numere întregi, și alte tipuri de valori - de exemplu, liniile.

fel, sprijin pentru astfel de rețele are multe la nivel înalt limbaje de programare interpretate cum ar fi PHP, Perl, Ruby, Python, Tcl, JavaScript, si altele.Pentru limbile care nu au instrumente de built-in pentru a lucra cu tablouri asociative, a creat un număr foarte mare de implementări în formă de biblioteci.

exemplu de tablou asociativ poate servi ca un director de telefon.In aceasta varianta, valoarea unui set de "F.IO + e ", iar cheia - numărul de telefon.Un număr de telefon este una maestru, dar o persoană poate deține mai multe camere.

Associated extindere

trebuie remarcat faptul că cele mai renumite de expansiune includ următoarele:

  • FIECARE - «merge» pentru a salva toate perechile.
  • CLEAR - pentru a șterge toate intrările.
  • MIN - găsi o pereche cu cea mai mică cheie.
  • MAX - găsi perechea cu cea mai importantă.

În ultimele două cazuri pe care trebuie să pe tastele indicate efectele de comparație.Implementari

de asociative

matrice Există multe implementări diferite ale tablou asociativ.Cel mai comun punerea în aplicare se poate baza pe o matrice simplă ale cărei componente sunt vapori (tasta valoare).Pentru a accelera acțiunile de căutare pot fi comandate pe componentele matrice și punerea în aplicare constatare cheie folosind o căutare binară.Dar va crește cantitatea de timp care aveți nevoie pentru a adăuga un nou pereche, așa cum va trebui să "push" componentele matrice care a apărut într-o celulă goală pentru a împacheta un record curat.

cel mai bine cunoscut de punere în aplicare, pe baza diferitelor copaci de căutare.De exemplu, într-o sală de lectură STL tipic de C ++ harta container este realizat pe baza de negru și mahon.În stilul de Ruby, Tcl, Python folosit un tip de tabel hash.Există, de asemenea pentru alte aplicații.

În general, fiecare punere în aplicare are avantajele și dezavantajele sale.Este important ca toate cele trei operațiuni au fost realizate în medie, și în cel mai rău perioada de nuanță despre (log n), unde n - numărul curent pentru a salva alin.Pentru o copaci căutare concertate (inclusiv arbori negru și roșu), această condiție este îndeplinită.

cunoscut faptul că implementările bazate pe tabele de dispersie, definiți ca O medie de timp (1), care este mai bună decât acțiunile bazate pe arborele de căutare.Desigur, acest lucru nu garantează o execuție de mare viteză a unor operațiuni: durata instrucțiunea INSERT este menționată ca cea mai gravă O caz (n).Proces INSERT este efectuată pentru o lungă perioadă de timp, atunci când raportul umplere atinge cel mai înalt punct, iar acolo este nevoia de a reconstrui tabelul index hash.

fel, aceste declarații hash rău că pe această bază este imposibil de a efectua acțiuni suplimentare rapid MAX, MIN și algoritmul de traversare pentru a salva toate perechile în ordinea descrescătoare a sau creșterea chei.