Matrice în JavaScript. Matrice multidimensionale în javascript și mai multe moduri de a le sorta Matrice multidimensionale în exemple de javascript
În articolul anterior, am vorbit despre ce este și cum să lucrăm cu el. În acest articol vom vorbi despre matrice multidimensională.
Este o matrice care are unul sau mai multe elemente, care sunt și matrice. În funcție de profunzimea anunțului, în special, acesta poate fi numit matrice bidimensională(2 nivele) fie matrice tridimensională(3 nivele) fie patrudimensională(4 nivele) și așa mai departe.
Cel mai popular, după matricea unidimensională, cea mai folosită este matricea bidimensională. O vom studia mai detaliat.
După cum puteți vedea, elementele unei matrice bidimensionale sunt matrice unidimensionale. Dacă aceste matrice unidimensionale ar conține mai multe matrice, atunci matricea arr ar fi deja tridimensională.
De exemplu, să creăm trei matrice simple și să le umplem cu date. Vom umple primul cu numere pare, al doilea cu numere impare, iar al treilea cu câteva date arbitrare.
// Declara trei matrice goale var evenNumbers = new Array (); // Variabila k - pentru indicii de matrice evenNumbers var k = 0; var oddNumbers = nou Array (); // Variabila n - pentru indicii de matrice oddNumbers var n = 0; var data = nou Array („mașină”, „avion”, adevărat, 89, „m”); // Completați matricea EvenNumbers, cu numere pare pentru (var i = 1; i
Pentru a vedea ce se află în interiorul matricei, puteți utiliza un astfel de instrument precum consolă.
De exemplu, dorim să vedem conținutul unui tablou cu numere impare oddNumbers. Pentru a face acest lucru, scrieți următoarea linie în codul de mai jos:
Console.log (numere impare);
Pentru a vedea rezultatul, trebuie să deschideți consola în browser... În Google Chrome, acest lucru se face astfel: faceți clic dreapta pe pagină, iar din meniul contextual, selectați ultima opțiune „Vizualizare cod”, adică inspectorul. În versiunea în limba engleză, această opțiune se numește Inspect.
Și sub bara de instrumente pentru dezvoltatori va apărea. În el, trebuie să accesați fila Consolă.
Acum pentru a creați o matrice bidimensională, trebuie să îl declarați și să adăugați matricele unidimensionale pe care le-ați creat mai sus.
// Declarați o matrice bidimensională twoDimens și umpleți-o var twoDimens = new Array (numere pare, numere impare, date); console.log (două dimensiuni);
Să vedem conținutul acestei matrice în consolă.
iterând pe o matrice bidimensională
În primul rând, să învățăm cum se accesează elementele unui tablou bidimensional.
Ca și în cazul matricelor unice, elementele sunt accesate prin indicii lor.
Ca exemplu, să afișăm elementul la indexul 3 dintr-o matrice cu numere impare (oddNumbers). Indicele matricei unidimensionale oddNumbers din tabloul bidimensional twoDimens este unul (1).
Document.write ("Elementul cu indicele 3 din matricea numerelor impare oddNumbers este:" + twoDimens); // Element: 7
În tabloul twoDimens, ne referim la elementul de la indexul 1. Elementul de la acel index este matricea oddNumbers. Și în această matrice, accesăm deja elementul cu indicele 3, care este numărul 7.
Acum să trecem la întrebarea în sine cum să bucleți peste o matrice bidimensională.
Bucla peste o matrice bidimensională se face folosind o buclă dublă. De exemplu, să iterăm peste matricea noastră twoDimens.
Pentru (var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("
Element cu index „+ i +” „+ j +” este egal cu: „+ două dimensiuni [i] [j] +”
"); } }În prima buclă, iterăm peste matricea twoDimens în sine. În a doua buclă, repetăm deja elementul în sine (matrice). În primul rând, variabila i este egală cu 0. Prin urmare, în a doua buclă, mai întâi iterăm peste primul tablou evenNumbers, care are indicele 0. Și deja în interiorul celei de-a doua bucle, accesăm elementele acestei matrice. Astfel: douăDimensiuni [j]. Unde j variază de la 0 la lungimea matricei evenNumbers.
După iterarea elementelor din prima matrice, revenim la prima buclă, incrementăm variabila i și continuăm să iterăm peste a doua matrice oddNumbers, care are indicele 1. Și astfel iterăm peste fiecare element al matricei bidimensionale. două dimensiuni.
Acum să ne uităm la rezultatul acestei căutări:
Despre asta am vrut să vorbesc în acest articol. Acum știi cum să creezi o matrice bidimensională, cum să accesezi elementele unei matrice bidimensionale și cum să iterați peste o matrice bidimensională. Sper că totul a fost clar. Va doresc mult succes!
În acest articol, vom arunca o privire asupra matricelor standard JavaScript indexate numeric. Matricele sunt declarate folosind paranteze drepte:
var fructe = ["Mer", "Portocale", "Magar"]
Pentru a extrage un element, plasați indicele acestuia între paranteze drepte. Primul indice 0:
var fructe = ["Mer", "Orange", "Magar"] alertă (fructe) alertă (fructe) alertă (fructe)
De asemenea, putem obține lungimea unui tablou JavaScript:
var fructe = alertă [„Mer”, „Portocale”, „Măgar”] (fructe.lungime)
Hopa! Am creat o matrice cu două fructe și un măgar. Acum trebuie să scoatem măgarul.
Metodele pop și push
Metoda pop din JavaScript elimină un element dintr-o matrice și îl returnează.
Următorul exemplu arată cum este preluat Donkey dintr-o matrice:
var fructe = ["Apple", "Orange", "Donkey"] alert ("Șterg" + fruits.pop ()) // Acum avem doar ["Apple", "Orange"] alert ("Acum dimensiunea matricei : „+ fructe.lungime) // măgar îndepărtat
Rețineți că pop modifică matricea în sine.
Analogul pop este metoda push, care adaugă un element la o matrice. De exemplu, am uitat să adăugăm o piersică:
var fructe = ["Mer", "Orange"] fructe.push ("Piersic"); // acum avem alertă ["Mere", "Portocală", "Piersică"] ("Ultimul articol:" + fructe)
- Creați o matrice de stiluri cu elemente „ Jazz”, “Blues”;
- Adăugați valoarea " Rock'n'Roll«;
- Înlocuiți a doua valoare de la sfârșit cu „ Clasic". Ar trebui să ajungeți cu o matrice: „ Jazz”, ”Clasic”, ”Rock'n'Roll”. Codul ar trebui să funcționeze pentru orice lungime a matricei;
- Extrageți ultima valoare din matrice și alertați-o.
Soluţie
// 1 var stiluri = ["Jazz", "Bluez"] // 2 stiluri.push ("Rock" n "Roll") // sau: stiluri = "Rock" n "Roll" // 3 stiluri = "Clasic „// 4 alerte (styles.pop ())
Metode de schimbare/renunțare
Metodele shift / unshift funcționează la sfârșitul unei matrice, dar puteți folosi și shift pentru a muta elementele în sus ( prima valoare a matricei este eliminată cu o deplasare a elementelor). Metoda unshift permite JavaScript să adauge un element la o matrice de la sfârșit:
var fruits = ["Apple", "Orange"] var apple = fruits.shift () // acum avem doar ["Orange"] fruits.unshift ("Lemon") // acum avem ["Lemon", " Portocală"] alertă (fructe.lungime) // 2
Atât shift, cât și unshift pot funcționa pe mai multe elemente în același timp:
var fruits = ["Apple"] fruits.push ("Orange", "Peach") fruits.unshift ("Ananas", "Lămâie") // acum matricea arată astfel: ["Ananas", "Lămâie", „Mer”, Portocală, Piersici”]
Temă de auto-studiu
Scrieți codul pentru a afișa o valoare aleatorie din matricea arr prin alertă:
var arr = ["Prune", "Orange", "Magar", "Morcov", "JavaScript"]
Notă: Codul pentru obținerea unui număr aleatoriu de la valoarea minimă la valoarea maximă (inclusiv) este următorul:
var rand = min + Math.floor (Math.random () * (max + 1-min))
Soluţie
Trebuie să extragem un număr aleatoriu între 0 și arr.length-1 (inclusiv):
var arr = ["Prune", "Orange", "Magar", "Morcov", "JavaScript"] var rand = Math.floor (Math.random () * arr.length) alertă (arr)
Iterarea peste o matrice
În JavaScript, iterarea peste o matrice se face folosind o buclă for:
var fructe = ["Ananas", "Lămâie", "Mer", "Portocală", "Piersică"] pentru (var i = 0; i Creați o funcție find (arr, value) care găsește o valoare într-o matrice dată și returnează indexul acesteia, sau -1 dacă nu a fost găsită nicio valoare. De exemplu: arr = [„test”, 2, 1,5, fals] găsiți (arr, „test”) // 0 găsiți (arr, 2) // 1 găsiți (arr, 1.5) // 2 găsiți (arr, 0) // -1 O posibilă soluție ar putea arăta astfel: funcția găsi (matrice, valoare) (pentru (var i = 0; i Dar acest lucru nu este adevărat, deoarece == nu face diferența dintre 0 și fals. Este mai corect să utilizați === atunci când lucrați cu matrice în JavaScript. În plus, cel mai recent standard ES5 conține funcția Array # indexOf. Cu ajutorul acestuia, putem defini o funcție după cum urmează: funcția find (matrice, valoare) (dacă (array.indexOf) returnează matrice.indexOf (valoare) pentru (var i = 0; i Ar fi și mai inteligent să definiți find printr-o condiție pentru a verifica dacă metoda indexOf există. Creați o funcție filterNumeric (arr) care preia o matrice și returnează o nouă matrice care conține numai valorile numerice din arr. Un exemplu despre cum ar trebui să funcționeze: arr = ["a", 1, "b", 2]; arr = filtruNumeric (arr); // acum arr = Soluția este să faci bucla peste matrice și să adaugi valori la noua matrice dacă acestea sunt numerice. Uneori aveți nevoie de o modalitate rapidă de a converti o matrice JavaScript într-un șir. Pentru asta este metoda join. Concatenează matricea într-un șir folosind delimitatorul specificat: fructe var = ["Lămâie", "Mer", "Portocală", "Piersică"]; var str = fructe.join (","); alertă (str); Conversia inversă se face cu ușurință prin metoda împărțirii: fructe var = „Mer, Portocală, Piersică”; var arr = fructe.split (","); // arr conține acum ["Mere", "Portocală", "Piersică"] alertă (arr); Obiectul include o proprietate className care conține numele claselor, separate prin spații: Scrieți o funcție addClass (obj, cls) care adaugă clasa cls, dar numai dacă aceasta nu există: ddClass (obj, "new") // obj.className = "deschide meniu nou" addClass (obj, "open") // nicio modificare (clasa există deja) addClass (obj, "me") // obj.className = Alertă „deschideți meniu nou” (obj.className) // Trebuie să împărțiți className și bucla în părți. Dacă clasa nu este găsită, este adăugată. Bucla este ușor optimizată pentru a crește performanța: funcția addClass (elem, cls) (pentru (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (dacă (c [i] == cls) ) return) elem.className + = "" + cls) var obj = (className: "open menu") addClass (obj, "new") addClass (obj, "open") alert (obj.className) // deschide meniul nou În exemplul de mai sus, variabila c este definită la începutul buclei, iar ultimul său indice este setat la i. Bucla în sine este procesată în direcția opusă, terminând cu condiția i> = 0. Deoarece i> = 0 este mai rapid de verificat decât i. Ceea ce în JavaScript face căutarea într-o matrice mai rapidă. Folosind proprietatea length, puteți tăia o matrice astfel: Dați lungimea, iar browserul trunchiază matricea. De fapt, în JavaScript, Array este un obiect, complet cu setare automată a lungimii și metode speciale. Acest lucru diferă de conceptul din alte limbi, unde matricele reprezintă un segment contigu de memorie. De asemenea, este diferit de o listă legată bazată pe coadă sau stivă. Cheile sunt numere, dar pot avea orice nume: arr = arr = 5 arr.prop = 10 // nu face asta În JavaScript, matricele sunt tabele hash cu avantajele lor de performanță, dar și dezavantaje. De exemplu, push / pop funcționează numai pe elementele cele mai exterioare ale matricei, deci sunt incredibil de rapide. push funcționează doar la capăt: var arr = ["My", "array"] arr.push ("ceva") alert (arr) // șir "array" Metodele Shift / Unshift sunt lente, deoarece trebuie să renumeroteze întreaga matrice. Metoda de îmbinare poate provoca și renumerotare: Care va fi rezultatul? De ce? arr = ["a", "b"] arr.push (funcție () (alertă (aceasta))) arr () //? Deoarece tablourile sunt obiecte, arr .. este de fapt un apel la o metodă a unui obiect precum obj metodă: arr () // la fel ca arr () // greșit din punct de vedere sintactic, dar același din punct de vedere conceptual: arr.2 () // rescris în același stil ca obj.method () this = arr în acest caz este transmis funcției, astfel încât conținutul arr este scos. arr = ["a", "b"] arr.push (funcție () (alertă (aceasta))) arr () // "a", "b", funcție Proprietatea lungime vă permite să obțineți nu dimensiunea matricei în JavaScript, ci ultimul index + 1. Acest lucru este important atunci când vine vorba de matrice rare, cu „goluri” în indici. În exemplul următor, vom adăuga două elemente la fructele goale, dar lungimea rămâne la 100: var fructe = // fructe matrice goale = fructe „piersici” = alertă „măr” (fructe.lungime) // 100 (dar există doar 2 elemente în matrice) Dacă încercați să scoateți o matrice rară, browserul va afișa indicii lipsă ca elemente goale: var fructe = // fructe matrice goale = fructe „piersici” = alertă „măr” (fructe) //, piersică, măr (sau ceva de genul acesta) Dar o matrice este un obiect cu două chei. Valorile lipsă nu ocupă spațiu. Matricele rare se comportă ciudat atunci când li se aplică metode de matrice. Nu au idee că indicii lipsesc: var fructe = fructe = "Piersici" fructe = "Mere" alertă (fruits.pop ()) // împinge "Apple" (la indexul 9) alert (fruits.pop ()) // împinge un dezactivat (la indexul 8) ) ) Încercați să evitați matricele rare. Oricum, metodele lor nu vor funcționa bine. Utilizați în schimb Object. După cum știm, matricele sunt obiecte, așa că am putea folosi delete pentru a șterge valoarea: var arr = ["Mergi", "la", "acasă"] șterge arr // acum arr = ["Mergi", nedefinit, "acasă"] alertă (arr) // nesetat Puteți vedea că valoarea este eliminată, dar nu așa cum ne-am dori, deoarece matricea conține un nesetat. Operatorul de ștergere șterge o pereche cheie-valoare și asta este tot. Desigur, deoarece o matrice este doar un hash, poziția elementului eliminat devine nedefinită. De cele mai multe ori, trebuie să eliminăm un element fără a lăsa „găuri” între indici. Există o altă metodă care ne va ajuta în acest sens. Metoda splice poate elimina și înlocui elemente din matrice multidimensionale JavaScript. Sintaxa sa este: arr.splice (index, deleteCount [, elem1, ..., elemN]) Șterge elementul deleteCount începând cu index și apoi inserează elem1,..., elemN în locul său. Să aruncăm o privire la câteva exemple: var arr = ["Go", "to", "home"] arr.splice (1, 1) // elimină 1 element începând de la indexul 1 alertă (arr.join (",")) // ["Go " ," acasă "] (1 articol eliminat) În acest fel, puteți utiliza splice pentru a elimina un element din matrice. Numerele elementelor de matrice sunt deplasate pentru a umple golul: var arr = ["Go", "to", "home"] arr.splice (0, 1) // elimină 1 element începând de la indexul 0 alertă (arr) // "to" a devenit primul element Următorul exemplu arată cum să înlocuiți elementele: Metoda splice returnează o matrice a elementelor eliminate: var arr = ["Mergi", "la", "acasă", "acum"]; // eliminați primele 2 elemente var removed = arr.splice (0, 2) alertă (eliminat) // „Mergeți”, „la”<-- массив удаленных элементов
splice может вставлять элементы, задайте 0 для deleteCount.
var arr = ["Go", "to", "home"];
// со второй позиции
// удаляем 0
// и вставляем "my", "sweet"
arr.splice(2, 0, "my", "sweet")
alert(arr) // "Go", "to", "my", "sweet", "home" Această metodă poate folosi, de asemenea, un index negativ, care este numărat de la sfârșitul matricei: var arr = // pentru elementul -1 (penultimul) // eliminați 0 elemente, // și introduceți 3 și 4 arr.splice (-1, 0, 3, 4) alert (arr) // 1,2,3, 4.5 Obiectul conține o proprietate className care conține numele claselor, separate prin spații: var obj = (className: „meniu deschis”) Scrieți o funcție removeClass (obj, cls) care elimină clasa cls dacă este dată: removeClass (obj, "open") // obj.className = "meniu" removeClass (obj, "blabla") // fără modificări (nu există nicio clasă de eliminat) Trebuie să împărțiți className în părți și să faceți o buclă peste aceste părți. Dacă se găsește o potrivire, aceasta este eliminată din matricea JavaScript de obiecte și apoi atașată înapoi la sfârșit. Să optimizăm puțin acest lucru: funcția removeClass (elem, cls) (pentru (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (dacă (c [i] == cls) ) c.splice (i, 1)) elem.className = c.join ("")) var obj = (className: "open menu") removeClass (obj, "open") removeClass (obj, "blabla") alertă (obj.className) // meniu În exemplul de mai sus, c este setat la începutul buclei, iar i este setat la ultimul său indice. Bucla în sine rulează în direcția opusă, terminând cu condiția i> = 0. Acest lucru se datorează faptului că i> = 0 este testat mai repede decât i. Ceea ce accelerează căutarea unei proprietăți în c. Puteți extrage o parte dintr-o matrice folosind metoda slice (begin [, end]): var arr = ["De ce", "învățare", "JavaScript"]; var arr2 = arr.slice (0,2) // preia 2 elemente începând de la 0 alertă (arr2.join (",")) // „De ce, învață” Rețineți că această metodă nu modifică numărul de elemente din matrice în JavaScript, ci copiază o parte din acesta. Puteți omite cel de-al doilea argument pentru a obține toate elementele începând de la un index specific: var arr = ["De ce", "învață", "JavaScript"]; var arr2 = arr.slice (1) // acceptă toate elementele care încep cu 1 alertă (arr2.join (",")) // „learn, JavaScript” Metoda acceptă indici negativi, la fel ca String # slice. O altă metodă utilă este inversa. Să presupunem că vreau să obțin ultima parte a domeniului, de exemplu, „ com"Din" my.site.com”. Iată cum o poți face: var domain = "my.site.com" var last = domain.split ("."). Reverse () alert (ultimul) Rețineți că tablourile JavaScript acceptă o sintaxă complexă (reverse ()) pentru a invoca o metodă și apoi a prelua un element din tabloul rezultat. Puteți efectua apeluri mai lungi, cum ar fi invers () 0] arr.sort () alertă (arr) // 1, 15, 2 Rulați codul de mai sus. Veți primi comanda 1, 15, 2. Acest lucru se datorează faptului că metoda convertește totul într-un șir și folosește ordinea lexicografică implicită. Ziua bună tuturor. Alexey Gulynin este în legătură. În ultimul articol, am analizat construcția switch case în javascript. În acest articol, aș vrea să vă spun ce este matrice în Javascript... Noțiunea de matrice joacă un rol important nu numai în Javascript, ci și în toată programarea. O variabilă, cum ar fi o matrice, conține nu un element, ci mai multe. Sintaxa pentru crearea unui tablou este următoarea: Var mas = nou Array (valoare1, valoare2, ..., valoareN); În acest caz, se creează o variabilă mas de tip matrice cu valorile indicate în paranteze. Vă rugăm să rețineți că matricea este creată folosind noul cuvânt cheie. Vă puteți referi la elementele unei matrice specificând numele matricei și indexul matricei între paranteze drepte. Indicele matricei este bazat pe zero. Să dăm un exemplu de matrice cu 4 elemente și să ieșim 2 elemente:
Dacă punem mas, va tipări „privet”, deoarece indexarea matricei începe de la zero. Să ne dăm seama acum cum să afișam toate elementele unui tablou. Pentru a face acest lucru, trebuie să utilizați o buclă. Pe lângă cunoașterea buclelor în Javascript, trebuie să cunoașteți proprietatea de lungime a matricelor, care returnează numărul de elemente dintr-o matrice (sau, cu alte cuvinte, lungimea acesteia). Să tipărim lungimea matricei mas:
Ieșirea tuturor elementelor unui tablou:
Până acum, ne-am uitat la tablouri unidimensionale. În general, tablourile pot fi multidimensionale. Principalul lucru este să înțelegeți că, de exemplu, o matrice bidimensională este o matrice ale cărei elemente sunt matrice. Să analizăm următoarea problemă cu dvs.: trebuie să creați o matrice bidimensională 3 cu 3, ale cărei elemente sunt stabilite de utilizator și să afișați această matrice. Aici vom folosi operatorul prompt pentru a solicita utilizatorului un număr:
În cazul nostru, o matrice bidimensională corespunde (de exemplu) următoarei structuri: mas = [,,]. Puteți vedea că matricea are 3 elemente, fiecare dintre ele fiind o matrice în sine. Inițial, sarcina lui Javascript a fost să creeze site-uri dinamice. În practica mea, nu am folosit nicăieri matrice bidimensionale, doar unidimensionale, așa că cunoștințele despre matrice pe care le-ați primit din acest articol vor fi destul de suficiente. Într-unul dintre articolele următoare, voi vorbi despre obiectul Array, proprietățile și metodele acestuia. În JavaScript, matricele multidimensionale sunt matrice de matrice. Pentru a accesa un element al, de exemplu, o matrice bidimensională, trebuie să specificați un operator de două ori. Să presupunem că matricea variabilă este o matrice de matrice de numere întregi. Fiecare dintre elementele matricei [j] este o matrice de numere. Pentru a ne referi la un număr separat, folosim notația: matrice [j] [k]. Exemplu. Să folosim o matrice bidimensională pentru a crea tabelul de înmulțire. var matrice = nou Array (10); // există 10 linii în matrice pentru (var j = 0; j< matrix.length; j++) matrice [j] = nou Array (10); // d fiecare linie a creat 10 coloane pentru (var rând = 0; rând< matrix.length; row++) { pentru (col = 0; col< matrix .length; col++) { matrice = rând * col; // umplerea elementelor matricei var rezult = matrice; // rezultatul înmulțirii 24 O utilizare tipică a unei matrice 2D în JavaScript este de a crea o serie de opțiuni de meniu personalizate. Să presupunem că unele dintre opțiunile din meniul principal corespund opțiunilor dintr-un submeniu derulant. Să creăm o matrice a cărei lungime se potrivește cu numărul de opțiuni din meniul principal. Elementele acestui tablou vor fi matrice cu numele opțiunilor corespunzătoare acestora din submeniu. meniu = nou Аrrаy (); meniu = nеw Аrrаy ("Opțiunea 1.1", "Opțiunea 1.2", "," Opțiunea 1.3 "); mеnu = nеw Аrrаy ("Opțiunea 2.1", "Opțiunea 2. 2"); meniu = nou Аrrаy ("Opțiunea 3.1", "Opțiunea 3.2", "Opțiunea 3.3", "Opțiunea 3.4"); Pentru a accesa prima opțiune a celui de-al doilea submeniu, trebuie să scrieți: meniu // valoarea este „Opțiunea 2.1”; Să modificăm construcția matricei astfel încât să conțină atât numele opțiunilor din meniul principal, cât și ale opțiunilor submeniului: meniu = nou Аrrау () meniu = nou Arrau („Meniu1”, „Meniu2”, „Meniu3”); meniu = nou Аrrау (); meniu = noua matrice („Opțiunea 1.1”. „Opțiunea 1.2”, „Opțiunea 1.3”); meniu = nou Arrau („Opțiunea 2.1”, „Opțiunea 2. 2”); meniu = nou Array („Opțiune 3.1”, „Opțiune 3. 2”, „Opțiune H.3”, „Opțiune 3.4”); meniu // valoarea este „Meniu2” meniu // valoarea este „Meniu3” meniu // valoarea este „Opțiunea 2.1” meniu // valoarea este „Opțiunea 3.2” Metode de matrice În această secțiune, vom lua în considerare metodele cu care puteți manipula elementele matricei. a te alatura () - o metodă care convertește fiecare dintre elementele matricei într-un șir și le concatenează. Un șir opțional poate fi specificat ca argument pentru metoda de separare a elementelor individuale din șirul rezultat. Dacă nu specificați un separator, separatorul implicit este o virgulă. var arr =; // dat un tablou de trei elemente var str = arr.join (); // valoarea str este „12,23,38” str = arr.join (";"); // str == "12; 23; 38" După cum sa menționat mai devreme, metoda Array.join () este inversul metodei String.split (), care împarte șirurile în elemente de matrice. invers () - o metodă care inversează ordinea elementelor dintr-o matrice. Această metodă nu creează o nouă matrice, ci le schimbă ordinea în matricea originală. var arr = nеw Аrrау (1,2,3); // arr = 1, arr = 2, arr = 3 arr.reverse (); // arr = 3, arr = 2, arr = 1 var str = arr.jоin (); // str == "3,2,1" fel () - o metodă care sortează elementele unui tablou în loc și returnează o matrice sortată. Dacă metoda sort () este apelată fără niciun argument, va sorta elementele matricei în ordine alfabetică, transformându-le temporar în valori de șir pentru a efectua o comparație dacă este necesar. var arr = nеw Аrrаy ("banana", "сherrry", "mere"); var str = arr.join (","); // str == „măr, banană, cireș” Dacă matricea conține un element nedefinit, acesta este împachetat până la sfârșitul matricei. Pentru a sorta nu în ordine alfabetică, ci într-o altă ordine, metoda sort () este transmisă ca argument funcției de comparație, a cărei sarcină este să indice regula conform căreia unul dintre cele două argumente ale sale va fi localizat mai devreme în lista sortată. Dacă al doilea trebuie să fie precedat de primul argument, funcția de comparare trebuie să returneze o valoare negativă. Dacă în tabloul sortat primul argument trebuie să-l urmeze pe al doilea, atunci funcția trebuie să returneze un număr pozitiv. Funcția de comparație ar trebui să returneze 0 dacă cele două valori sunt echivalente, adică ordinea lor nu este importantă. Exemplu. Să sortăm în ordine numerică. var arr =; arr.sort (); // în ordine alfabetică: 11111, 2222, 333, 44 arr.sort (funcție (primul, al doilea) (// întoarcere primul - al doilea; )); // Ordine numerică: 44, 333, 2222, 11111 Este convenabil să folosiți un literal funcțional în acest fragment de cod, deoarece funcția de comparare va fi apelată o dată și nu este nevoie să o denumiți. Prin definirea altor funcții de sortare, puteți efectua o mare varietate de metode de sortare. concat () - o metodă care creează și returnează o nouă matrice care conține elementele matricei originale, completată cu valorile tuturor argumentelor specificate în metoda concat (). În cazul în care argumentul în sine este o matrice, elementele sale vor fi adăugate la tabloul rezultat. Dar, trebuie remarcat faptul că recursiunea nu este efectuată atunci când se împarte matrice de matrice. var arr =; arr.concat (4, 5) // rezultat arr. concat (); // rezultat arr. concat (,) // rezultat arr. concat (4,]) // rezultat] felie () - o metodă care returnează un subbary (fragment) din tabloul original. Metoda are două argumente care indică începutul și sfârșitul subbaryului returnat. Tabloul returnat va conține elemente începând de la cel al cărui index este indicat de primul argument, până la elementul al cărui index este indicat de al doilea argument, dar fără a-l include. Dacă specificați un singur argument, matricea returnată conține elemente de la poziția specificată de argument până la sfârșitul matricei. Un argument negativ specifică numărul elementului de matrice de la sfârșitul matricei. var arr =; arr.slice (0,3); // va reveni arr. felie (3); // va reveni arr. felie (1, -1); // va reveni arr. felie (-3, -2); // va reveni îmbinare () - o metodă universală care poate fi folosită pentru a adăuga și elimina elemente dintr-o matrice sau pentru ambele operații în același timp. Ca rezultat al operațiunii metodei, matricea originală este schimbată. În metoda splice (), primul argument specifică indexul matricei la care va începe ștergerea și/sau inserarea, al doilea argument specifică numărul de elemente de eliminat. Dacă omiteți al doilea argument, atunci elementele matricei vor fi eliminate, începând de la poziția specificată de primul argument al metodei și până la sfârșitul matricei. Returnează metoda splice (). serie de elemente eliminate. Dacă al doilea argument este 0, metoda va returna o matrice goală. var arr =; arr.splice (4); // va reveni; arr devine egal arr.splice (1,2); // va reveni; arr devine egal Două argumente pentru metoda splice (), care specifică elementele matricei care trebuie eliminate, pot fi urmate de orice cantitate argumente suplimentare care specifică elementele de inserat în matrice, începând cu indexul specificat de primul argument al metodei. var arr =; arr.splice (2,0, "ab", "cd"); / * va reveni; arr devine * / îmbinare (2,2,, 3); / * va returna ["ab", "cd"]; arr devine, 3,33,44,55] * / Rețineți că metoda splice () nu împarte argumentele matricei în elemente separate care trebuie inserate, ci mai degrabă inserează matricea în sine. apăsați () și pop () - metode care permit utilizarea matricelor ca stive. Metoda push () adaugă elemente noi la sfârșitul matricei și returnează noua lungime a matricei. Metoda pop () elimină ultimul element din matrice și returnează valoarea ștearsă ca rezultat. Ambele metode modifică matricea originală. Când utilizați o combinație a metodelor push () și pop () în JavaScript, puteți utiliza o matrice pentru a crea o stivă cu o regulă de serviciu primul întrat, ultimul ieșit. var stаk =; // stiva goală stivă.împinge (1,2); // matrice: va returna 2 grămadă. pop (); // matrice: va returna 2 stivă.împinge (3); // matrice: va returna 2 stak.рр (); // matrice: va returna 3 stivă.împinge (); // matrice:] va returna 2 grămadă. pop () // matrice: va reveni grămadă. pop (); // matrice: va returna 1 unshift () și shift () - metode care funcționează aproape la fel ca push () și pop (), dar nu inserează și elimină elemente la sfârșitul matricei, ci la început. Metoda unshift () adaugă unul sau mai multe elemente la începutul matricei, compensând elementele până la sfârșitul matricei și returnează noua lungime a matricei. Metoda shift () este folosită pentru a elimina primul element al unui tablou, returnează elementul eliminat. var arr =; // arr: arr.unshift (1); // arr: va returna 1 arr.unshift (22); // arr: va returna 2 arr.shift (); // arr: va returna 22 arr.unshift (3,); // arr:, 1] va returna 3 arr.shift (); // arr: [, 1] va returna 3 arr.shift (); // arr: se va întoarce arr.shift (); // arr: va returna 1 La apelarea metodei unshift () cu mai multe argumente, aceste argumente sunt inserate dintr-o dată, mai degrabă decât pe rând, așa cum se face în metoda splice (). Adică, în tabloul rezultat, valorile vor fi aranjate în aceeași ordine în care au fost scrise în lista de argumente când a fost apelată metoda. toString () și toLocaleString ()- metode care convertesc fiecare dintre elementele matricei într-un șir și afișează o listă separată prin virgulă a șirurilor primite. Metoda toString (), după cum s-a menționat, este disponibilă pentru orice obiect din JavaScript, inclusiv pentru o matrice. Rețineți că metodele nu lasă paranteze pătrate sau orice alți separatori în jurul valorilor matricei. ToString () // va returna „1,2,3” ["a", "b", "c"]. toString () // va returna "a, b, c" ] .toString () // va returna „1,2, s” Metoda toString () va returna același șir ca și metoda join () dacă este apelată fără parametri. toLocaleString () - O metodă care concatenează șirurile rezultate folosind un delimitator specific regiunii. Exemplul 1. Crearea unui banner ciclic (slideshow). Să creăm o serie de imagini care vor apărea pe pagină la anumite intervale. Slide = new Array("./pic/1.gif", "./pic/2.gif", "./pic/3.gif", "./pic/4.gif", "./pic/5.gif", "./pic/6.gif", "./pic/7.gif","./pic/8.gif", "./pic/9.gif"); //Изображения находятся во вложенной папке pic k=0; Len=Slide.length; function rotate(){ if (document.images){ document.banner.src=Slide[k]; setTimeout ("rotate()",1*1000); Temă de auto-studiu
Soluţie
Temă de auto-studiu
Soluţie
uniți și despărțiți
Temă de auto-studiu
Soluţie
Utilizarea lungimii pentru a tăia o matrice
Array este un obiect, ceea ce înseamnă
Chei de matrice non-numerice
Astfel, shift / unshift este mai lent decât push / pop. Cu cât matricea este mai mare, cu atât este nevoie de mai mult JavaScript pentru a sorta matricea.Temă de auto-studiu
Soluţie
Sparse Arrays, descrierea lungimii
Eliminarea dintr-o matrice
Metoda splice
Temă de auto-studiu
Soluţie
Metoda feliei
Metoda inversă