Kako določiti dolžino matrike javascript in številne druge funkcije za delo z njimi. Odstranjevanje iz niza

V tej lekciji se bomo seznanili z nizi, se naučili, kako jih ustvariti, izvajati operacije na njihovih elementih in si ogledati tudi osnovne metode in lastnosti, ki so na voljo pri delu z njimi.

Kaj je polje v JavaScriptu?

Niz je urejena zbirka vrednosti. Vrednosti v tej zbirki se imenujejo elementi. Vsak element v matriki ima svojo zaporedno številko (število), ki se imenuje indeks. Indeksi so oštevilčeni od 0 naprej.

Naslednja slika prikazuje številsko matriko, sestavljeno iz 5 elementov. Elementi tega polja vsebujejo naslednje podatke: 123 (indeks 0), 7 (indeks 1), 50 (indeks 2), -9 (indeks 3), 24 (indeks 4).

Ustvarjanje (deklariranje) matrike

Ustvarjanje nizov v JavaScriptu običajno poteka z uporabo matrični literal.

Matrični literal je sestavljen iz oglatih oklepajev, ki vsebujejo seznam elementov, ločenih z vejico.

Na primer:

Sprem. prazna = ; // prazna matrika var numbers = ; // številska matrika var arr = ; // matrika, ki vsebuje različne vrste podatkov

Ni nujno, da so vrednosti v matriki JavaScript iste vrste. Tisti. En niz lahko vsebuje vrednosti različnih vrst podatkov.

Do določenega elementa matrike dostopamo z njegovim indeksom. To operacijo imenujemo tudi operacija indeksiranja.

Na primer:

// ustvari matriko, sestavljeno iz 3 elementov var smartphoneColors = ["Black", "White", "Grey"]; // prikaži v konzoli brskalnika vrednosti elementov matrike smartphoneColors z indeksoma 0 in 2 console.log("Vrednost elementa matrike smartphoneColors z indeksom 0: " + smartphoneColors); // "Vrednost elementa matrike smartphoneColors z indeksom 0: Black" console.log("Vrednost elementa matrike smartphoneColors z indeksom 2: " + smartphoneColors); // "Vrednost elementa matrike smartphoneColors z indeksom 0: Gray" // spremeni vrednost elementa matrike smartphoneColors z indeksom 1 v "Red" smartphoneColors = "Red"; // ["Black", "Red", "Grey"] // nastavi element matrike smartphoneColors z indeksom 3 na vrednost "Blue" smartphoneColors = "Blue"; // ["črna", "rdeča", "siva", "modra"]

Uporabite lahko ne samo statične vrednosti, ampak tudi izraze kot vrednosti elementov matrike:

Var. dolžinaA = 7, širinaA = 5; var point = ;

Objekte je mogoče uporabiti kot vrednosti elementov polja.

Spremembe točk = [ (x1: 5, y1: 3), (x1: 7, y1: 10), (x1: 12; y1: 0) ]); // niz, sestavljen iz 3 objektov

Drug način za ustvarjanje niza sestoji iz klica funkcije konstruktorja Array.

Za ustvarjanje prazne matrike se uporabi klic funkcije konstruktorja brez argumentov.

Var prazna = nova matrika(); // prazna matrika

Ta metoda ustvarjanja matrike je enakovredna literalu.

Če podate število kot argument funkciji konstruktorja, bo ta ustvarila matriko, ki bo sestavljena iz podanega števila elementov. Poleg tega bodo vsi ti elementi imeli nedefinirano vrednost.

Var arr = nova matrika (5); // niz, sestavljen iz 5 elementov (vrednosti elementov so nedefinirane)

Če funkciji konstruktorja v oklepajih posredujete več vrednosti ali eno neštevilsko vrednost, bo ustvarila matriko iz argumentov, ki so ji bili posredovani.

Za razliko od mnogih drugih programskih jezikov nizi v JavaScriptu samodejno spreminjajo svojo velikost, tj. so same po sebi dinamične. Takim nizom ni treba dati nobenih dimenzij. Druga značilnost matrik JavaScript je, da lahko različni elementi iste matrike vsebujejo različne vrste podatkov.

lastnost dolžine (dolžina niza)

Določitev dolžine matrike (števila elementov) se izvede z uporabo lastnosti length.

//ustvarjanje matrike z navajanjem vrednosti elementov v funkciji Array var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dodeli spremenljivko lengthArray dolžini matrike volumeHDDs var lengthArray = volumeHDDs.length;

Kako pridobiti prvi element matrike

Pridobivanje vrednosti prvega elementa matrike se izvede z navedbo števila 0 v oglatih oklepajih te matrike:

//ustvarjanje matrike, sestavljene iz 3 elementov var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //pridobivanje vrednosti prvega elementa matrike var firstValue = volumeHDDs;

Kako pridobiti zadnji element matrike

Vrednost zadnjega elementa matrike se pridobi z navedbo izraza array_name.length-1 v oglatih oklepajih te matrike:

//ustvarjanje matrike, sestavljene iz 3 elementov var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //pridobivanje vrednosti zadnjega elementa matrike var lastValue = volumeHDDs;

Ponavljanje po matriki

Ponavljanje elementov matrike se izvede z uporabo zanke for.

Na primer, ponovimo vse elemente matrike in prikažimo njihove vrednosti v konzoli brskalnika (F12):

//ustvarjanje matrike nameStudents, sestavljene iz 4 elementov var nameStudents = new Array("Petya","Vasya","Kolya","Maxim"); //iteriraj elemente matrike od 0 do dolžine matrike-1 za (var i=0; i<= nameStudents.length-1; i++) { console.log(i+1 + " элемент массива = " + nameStudents[i]); }

Kaj je namen operatorja za brisanje?

Operator brisanja se ne uporablja za odstranitev elementa iz matrike, temveč za dodelitev nedefinirane vrednosti danemu elementu matrike.

Var namePlanets = new Array("Venera","Merkur","Zemlja","Mars"); izbriši namePlanets; za (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

Funkcije za delo z matrikami (metode predmetov matrike)

Objekt Array vsebuje naslednje metode (funkcije) za delo z nizi:

  • premik
  • unshift
  • rezina
  • spoj
  • razdeliti
  • vzvratno

Push metoda (dodajanje elementa na konec matrike)

Metoda potiskanja je zasnovana za dodajanje elementa na konec matrike. Vrednost tega elementa je navedena kot parameter te metode. Kot rezultat, potisna metoda vrne število elementov v matriki, pri čemer upošteva, kaj je bilo dodano.

Var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars"]; namePlanets.push("Jupiter"); // 5 console.log(namePlanets); // ["Venera", "Merkur", "Zemlja", "Mars", "Jupiter"]

metoda pop (odstranitev zadnjega elementa iz niza)

Metoda pop je zasnovana za odstranitev zadnjega elementa iz matrike. Ta metoda nima parametrov. Posledično vrne vrednost zadnjega (odstranjenega) elementa matrike.

Var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars"]; namePlanets.pop(); // "Mars" console.log(namePlanets); // ["Venera", "Merkur", "Zemlja"]

Metoda Shift (odstranitev prvega elementa iz matrike)

Metoda premika je zasnovana tako, da iz matrike odstrani prvi element, tj. element z indeksom 0. Vsi ostali elementi matrike so premaknjeni na začetek, tj. za vsakega od njih se indeks zmanjša za 1. Ta metoda kot rezultat vrne vrednost odstranjenega elementa.

Var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars"]; namePlanets.shift(); // "Venera" console.log(namePlanets); // ["Merkur", "Zemlja", "Mars"]

metoda unshift (dodajanje elementa na začetek matrike)

Metoda unshift je zasnovana za dodajanje elementa na začetek matrike (pred drugimi elementi). Vrednost tega elementa je navedena kot parameter te metode. Posledično ta metoda vrne število elementov v matriki, pri čemer upošteva, kaj je bilo dodano.

Var namePlanets = ["Merkur", "Zemlja", "Mars", "Jupiter"]; namePlanets.unshift("Venera"); // 5 console.log(namePlanets); // ["Venera", "Merkur", "Zemlja", "Mars", "Jupiter"]

metoda rezine (kopiranje dela matrike)

Metoda rezine je zasnovana za kopiranje dela matrike. Vendar ne spremeni prvotne matrike, ampak kot rezultat vrne novo matriko, sestavljeno iz izbranih elementov.

Metoda rezine ima 2 parametra:

  • 1 parameter (obvezen) - je namenjen označevanju indeksa elementa, iz katerega naj se začnejo kopirati elementi;
  • Parameter 2 (izbirno) - je namenjen označevanju indeksa elementa, v katerega je treba kopirati (v tem primeru ni vključen v novo matriko). Če tega ne podate, bodo kopirani elementi do konca navedene matrike.
var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars", "Jupiter"]; var newNamePlanets = namePlanets.slice(2, 4); // ["Zemlja", "Mars"]

Metoda spajanja (spreminjanje vsebine polja)

Metoda spajanja je zasnovana za spreminjanje vsebine polja. Uporablja se lahko tako za dodajanje elementov v matriko kot za njihovo odstranjevanje.

Sintaksa metode spajanja je:

Array.splice(startIndex, deleteCount [, element1[, element2[, ...]]]); /* startIndex (obvezno) - začetni indeks elementa, od katerega želite začeti spreminjati matriko. Če kot startIndex podate število, ki je večje od dolžine matrike, bo začetni indeks nastavljen na konec matrike. Če kot startIndex podate negativno število, se bo začetni element štel od konca. deleteCount (obvezno) - število, ki označuje, koliko elementov je treba izbrisati iz matrike. Če elementov ni treba izbrisati iz matrike, mora biti deleteCount nastavljen na 0. Po tem morate določiti vsaj en nov element, ki bo dodan v matriko. Če podate število kot deleteCount, ki bo preseglo število preostalih elementov v matriki, začenši z začetnim indeksom, potem bodo v tem primeru še vedno izbrisani (tj. vsi elementi do konca matrike, začenši z začetnim indeksom) element1, element2, ... (neobvezno) - elementi, ki jih je treba dodati v matriko. */

Primeri uporabe metode spajanja.

Uporaba metode spajanja za odstranitev nekaterih elementov iz matrike.

Var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars"]; namePlanets.splice(2, 2); //["Zemlja", "Mars"] console.log(namePlanets); // ["Venera", "Merkur"]

Uporaba metode spajanja za odstranitev elementa iz matrike in vanj dodajanje novih.

Var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars"]; namePlanets.splice(1, 1, "Uran", "Neptun", "Saturn"); // ["Merkur"] console.log(namePlanets); // ["Venera", "Uran", "Neptun", "Saturn", "Zemlja", "Mars"]

Uporaba metode spajanja samo za dodajanje novih elementov v polje.

Var namePlanets = ["Jupiter", "Saturn", "Uran"]; namePlanets.splice(0, 0, "Venera", "Merkur", "Zemlja", "Mars"); // console.log(namePlanets); // ["Venera", "Merkur", "Zemlja", "Mars", "Jupiter", "Saturn", "Uran"]

metoda pridružitve (pretvorba matrike v niz)

Metoda spajanja je zasnovana za združevanje vseh elementov matrike v niz.

Sintaksa metode spajanja:

Array.join(); /* ločilo (neobvezno) - ločilo, ki se uporablja kot povezovalni niz med posameznimi elementi matrike. Če ta parameter ni naveden, bo kot povezovalni niz uporabljen »,«. Če kot parameter podate prazen niz, potem elementi matrike v vrnjenem nizu ne bodo ločeni z ničemer */

Var jagode = ["Grozdje", "Grozdje", "Rizez", "Šipek"]; var berriesStr1 = berries.join(); // "Grozdje, grozdje, ribez, šipek" var berriesStr2 = berries.join(""); // "GrozdjeGrozdjeCurrantRosehip" var berriesStr3 = berries.join(", "); // "Grozdje, grozdje, ribez, šipek" var berriesStr4 = berries.join(" + "); // "Grozdje + grozdje + ribez + šipek"

Če kot ločilo uporabite neniz, bo pretvorjen v niz.

Var jagode = ["Grozdje", "Grozdje", "Rizez", "Šipek"]; var berriesStr1 = berries.join(false); // "GrapesfalseGrapesfalseCurrantfalseRosehip" var berriesStr2 = berries.join(4/2); // "Grapes2Grapes2Currant2Rose Hip" Elementi niza, ki imajo ničelno ali nedefinirano vrednost, bodo pretvorjeni v prazen niz. var arr = ; var arrStr = arr.join(", "); // "0, 5, -4"

Pretvarjanje niza v matriko - razdelitev

Metoda split je zasnovana za pretvorbo niza v matriko. Ta metoda ima en parameter, kot katerega lahko določite niz, na podlagi katerega bo ta niz razdeljen v matriko nizov.

Var strElementComputers = "Sistemska enota, monitor, tipkovnica, miška, zvočniki, tiskalnik"; var elementComputers = strElementComputers.split(", "); console.log("Število elementov v matriki: " + elementComputers.length); za (var i=0; i<= elementComputers.length-1; i++) { console.log(i + " элемент массива = " + elementComputers[i]); }

Preurejanje elementov niza v obratnem vrstnem redu - obratno

Obratna metoda je zasnovana za preurejanje elementov niza v obratnem vrstnem redu.

Var namePlanets = new Array("Venera","Merkur","Zemlja","Mars"); namePlanets.reverse(); console.log("Število elementov v matriki: " + namePlanets.length); za (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

Razvrščanje elementov matrike - sortiranje

Metoda sort se uporablja za razvrščanje elementov polja. Ta metoda privzeto razvrsti matriko kot nize.

Var namePlanets = new Array("Venera","Merkur","Zemlja","Mars"); namePlanets.sort(); console.log("Število elementov v matriki: " + namePlanets.length); za (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

21.06.2017 ob 12:17

Če želite izračunati velikost matrike predmetov v JavaScriptu, uporabite lastnost dolžine matrike.

Var arr = ["prvi", "drugi"]; console.log(arr.length); // 2

Matrikam v javascriptu lahko manjkajo indeksi. Na primer

Var arr = ; arr = "prvi"; arr = "drugi";

Lastnost dolžine vrne največji indeks matrike + 1. tj. v danem primeru je dolžina = 5.

Izračun števila elementov v matriki v javascriptu

Array.prototype.count = function())( var result = 0; for(var i = 0; i< this.length; i++) if (this[i] != undefined) result++; return result; }

Primer uporabe

Var arr = ; arr = "prvi"; arr = "drugi"; console.log(arr.count()); //2

Lastnosti dolžine lahko dodelite tudi vrednost. To vam omogoča, da zmanjšate dolžino obstoječe matrike.

Var arr = ["prvi", "drugi", "tretji"]; arr.length = 2; console.log(arr); // ["prva sekunda"]

Izračun velikosti matrike v bajtih v javascriptu

Matrike so običajni objekti, zato se izračun velikosti matrike v bajtih ne razlikuje od izračuna velikosti katerega koli drugega predmeta. Na žalost javascript ne ponuja API-ja za izračun velikosti, zato jo boste morali izračunati sami. To naredimo na naslednji način: pregledamo vse lastnosti predmeta; če je lastnost primitivnega tipa, skupnemu rezultatu dodamo velikost primerka te vrste; če lastnost vsebuje objekt, izračunamo rekurzivno njegova velikost.

Funkcija sizeOf(obj) ( var bytes = 0; if(obj !== null && obj !== undefined) ( switch(typeof obj) ( case "number": bytes += 8; break; case "string": bytes += obj.length * 2; break; case "boolean": bytes += 4; break; case "object": for(var key in obj) ( bytes += sizeOf(obj); ) break; ) ) return bytes ;);

Metoda ni natančna in ima veliko težav – obstaja na primer možnost, da greste v neskončno zanko.

Zadnja posodobitev: 26.3.2018

Objekt Array predstavlja matriko in ponuja številne lastnosti in metode, s katerimi lahko manipuliramo z matriko.

Inicializacija matrike

Prazno matriko lahko ustvarite z oglatimi oklepaji ali konstruktorjem matrike:

Var uporabniki = nova matrika(); var ljudje = ; console.log(uporabniki); // Matrika console.log(ljudje); //Matrika

Matriko lahko takoj inicializirate z določenim številom elementov:

Var users = new Array("Tom", "Bill", "Alice"); var ljudje = ["Sam", "John", "Kate"]; console.log(uporabniki); // ["Tom", "Bill", "Alice"] console.log(people); // ["Sam", "John", "Kate"]

Matriko lahko definirate in ji sproti dodajate nove elemente:

Var uporabniki = nova matrika(); uporabniki = "Tom"; uporabniki = "Kate"; console.log(uporabniki); // "Tom" console.log(users); //nedoločeno

Ni pomembno, da je matrika privzeto ustvarjena z ničelno dolžino. Z uporabo indeksov lahko nadomestimo enega ali drugega elementa v matriki pri določenem indeksu.

dolžina

Če želite izvedeti dolžino matrike, uporabite lastnost length:

Var fruit = new Array(); sadje = "jabolka"; sadje = "hruške"; sadje = "slive"; document.write("V matriki fruit " + fruit.length + " element:
"); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Pravzaprav bo dolžina matrike indeks zadnjega elementa plus ena. Na primer:

Var uporabniki = nova matrika(); // v matriki je 0 elementov users = "Tom"; uporabniki = "Kate"; uporabniki = "Sam"; for(var i=0; i

Izpis brskalnika:

Tom Kate undefined undefined Sam

Kljub temu, da nismo dodali elementov za indeksa 2 in 3, bo dolžina matrike v tem primeru številka 5. Samo elementa z indeksoma 2 in 3 bosta imela vrednost undefined.

Kopiranje matrike. rezina ()

Kopiranje matrike je lahko plitvo ali plitvo (shallow copy) in globoko (deep copy).

Za plitvo kopiranje je dovolj, da spremenljivki dodelite vrednost druge spremenljivke, ki hrani matriko:

Var users = ["Tom", "Sam", "Bill"]; console.log(uporabniki); // ["Tom", "Sam", "Bill"] var ljudje = uporabniki; // plitvo kopiranje ljudi = "Mike"; // spremenimo drugi element console.log(users); // ["Tom", "Mike", "Bill"]

V tem primeru bo spremenljivka people po kopiranju kazala na isto matriko kot spremenljivka users. Zato se bodo pri spreminjanju elementov v ljudeh spremenili tudi elementi v uporabnikih, saj gre dejansko za isti niz.

To vedenje ni vedno zaželeno. Na primer, želimo, da spremenljivke po kopiranju kažejo na ločene nize. In v tem primeru lahko uporabite globoko kopiranje z uporabo metode slice():

Var users = ["Tom", "Sam", "Bill"]; console.log(uporabniki); // ["Tom", "Sam", "Bill"] var people = users.slice(); // globoka kopija ljudje = "Mike"; // spremenimo drugi element console.log(users); // ["Tom", "Sam", "Bill"] console.log(ljudje); // ["Tom", "Mike", "Bill"]

V tem primeru bodo spremenljivke po kopiranju kazale na različne nize in jih lahko spreminjamo ločeno eno od druge.

Metoda slice() omogoča tudi kopiranje dela matrike:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var ljudje = uporabniki.slice(1, 4); console.log(ljudje); // ["Sam", "Bill", "Alice"]

Metodi slice() se posredujeta začetni in končni indeks, ki se uporabljata za pridobivanje vrednosti iz matrike. To pomeni, da gre v tem primeru izbor v novo matriko od indeksa 1 do indeksa 4, ne vključno z. In ker se indeksiranje matrike začne od nič, bo nova matrika vsebovala drugi, tretji in četrti element.

potisni()

Metoda push() doda element na konec matrike:

Var sadje = ; fruit.push("jabolka"); sadje.push("hruške"); fruit.push("slive"); sadje.push("češnja","marelica
"); document.write(sadje); // jabolka, hruške, slive, češnje, marelice

pop()

Metoda pop() odstrani zadnji element iz matrike:

Var sadje = ["jabolka", "hruške", "slive"]; var lastFruit = fruit.pop(); // ekstrahiraj zadnji element iz matrike document.write(lastFruit + "
"); document.write("V matriki fruit " + fruit.length + " element:
"); for(var i=0; i ");

Izpis brskalnika:

Slive Sadni niz ima 2 elementa: jabolka hruške

premik()

Metoda shift() pridobi in odstrani prvi element iz matrike:

Var sadje = ["jabolka", "hruške", "slive"]; var firstFruit = fruit.shift(); document.write(firstFruit + "
"); document.write("V matriki fruit " + fruit.length + " element:
"); for(var i=0; i ");

Izpis brskalnika:

Jabolka Sadni niz ima 2 elementa: hruške slive

unshift()

Metoda unshift() doda nov element na začetek matrike:

Var sadje = ["jabolka", "hruške", "slive"]; sadje.unshift("marelice"); document.write(sadje);

Izpis brskalnika:

Marelice, jabolka, hruške, slive

Odstranjevanje elementa po indeksu. spoj ()

Metoda splice() odstrani elemente na določenem indeksu. Na primer, odstranjevanje elementov iz tretjega indeksa:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var izbrisano = users.splice(3); console.log(izbrisano); // [ "Alice", "Kate" ] console.log(users); // [ "Tom", "Sam", "Bill" ]

Metoda rezine vrne odstranjene elemente.

V tem primeru se izbris izvede od začetka matrike. Če posredujete negativen indeks, bo brisanje izvedeno s konca matrike. Na primer, odstranimo zadnji element:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var izbrisano = users.splice(-1); console.log(izbrisano); // [ "Kate" ] console.log(users); // [ "Tom", "Sam", "Bill", "Alice" ]

Dodatna različica metode vam omogoča, da določite končni indeks za brisanje. Na primer, izbrišite prvi do tretji indeks:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var izbrisano = users.splice(1,3); console.log(izbrisano); // [ "Sam", "Bill", "Alice" ] console.log(users); // [ "Tom", "Kate" ]

Druga različica metode spajanja vam omogoča vstavljanje novih elementov namesto izbrisanih elementov:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var deleted = users.splice(1,3, "Ann", "Bob"); console.log(izbrisano); // [ "Sam", "Bill", "Alice" ] console.log(users); // [ "Tom", "Ann", "Bob", "Kate" ]

V tem primeru izbrišemo tri elemente od 1. do 3. indeksa in namesto njih vstavimo dva elementa.

concat()

Metoda concat() se uporablja za združevanje nizov:

Var sadje = ["jabolka", "hruške", "slive"]; var zelenjava = ["paradižnik", "kumare", "krompir"]; var izdelki = sadje.concat(zelenjava); for(var i=0; i< products.length; i++) document.write(products[i] + "
");

V tem primeru ni treba kombinirati samo nizov iste vrste. Možne so različne vrste:

Var sadje = ["jabolka", "hruške", "slive"]; var cene = ; var izdelki = fruit.concat(prices);

pridruži se()

Metoda join() združi vse elemente matrike v en niz:

Var sadje = ["jabolka", "hruške", "slive", "marelice", "breskve"]; var fruitString = fruit.join(", "); document.write(fruitString);

Metodi join() se posreduje ločilo med elementi polja. V tem primeru bosta kot ločilo uporabljena vejica in presledek (", ").

razvrsti()

Metoda sort() razvrsti matriko v naraščajočem vrstnem redu:

Var sadje = ["jabolka", "hruške", "slive", "marelice", "breskve"]; sadje.sort(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izpis brskalnika:

Marelice hruške breskve slive jabolka

obratno ()

Metoda reverse() obrne matriko nazaj:

Var sadje = ["jabolka", "hruške", "slive", "marelice", "breskve"]; fruit.reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izpis brskalnika:

Breskve marelice slive hruške jabolka

V kombinaciji z metodo sort() lahko matriko razvrstite v padajočem vrstnem redu:

Var sadje = ["jabolka", "hruške", "slive", "marelice", "breskve"]; fruit.sort().reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izpis brskalnika:

Jabolka slive breskve hruške marelice

Iskanje indeksa elementa

Metodi indexOf() in lastIndexOf() vrneta indeks prve in zadnje vključitve elementa v matriko. Na primer:

Var sadje = ["jabolka", "hruške", "slive", "jabolka", "hruške"]; var firstIndex = fruit.indexOf("jabolka"); var lastIndex = fruit.lastIndexOf("jabolka"); var otherIndex = fruit.indexOf("češnje"); document.write(firstIndex); // 0 document.write(lastIndex); // 3 document.write(otherIndex); // -1

firstIndex ima vrednost 0, ker je prva vključitev vrstice "jabolka" v matriko na indeksu 0, zadnja pa na indeksu 3.

Če elementa ni v matriki, potem v tem primeru metodi indexOf() in lastIndexOf() vrneta vrednost -1.

vsak()

Metoda every() preveri, ali vsi elementi ustrezajo določenemu pogoju:

Številke spremenljivk = [ 1, -12, 8, -4, 25, 42 ]; pogoj funkcije (vrednost, indeks, matrika) ( var. rezultat = laž; če (vrednost > 0) ( rezultat = resnično; ) vrni rezultat; ); var pass = numbers.every(condition); document.write(prešlo); // napačno

Metodi every() se posreduje funkcija, ki predstavlja pogoj kot parameter. Ta funkcija ima tri parametre:

Pogoj funkcije (vrednost, indeks, matrika) ( )

Parameter vrednosti predstavlja trenutni element matrike, ki se ponavlja, parameter indeks predstavlja indeks tega elementa, parameter matrike pa posreduje sklic na matriko.

V tej funkciji lahko preverimo vrednost posredovanega elementa glede skladnosti z nekim pogojem. Na primer, v tem primeru preverimo vsak element matrike, da vidimo, ali je večji od nič. Če je večji, potem vrnemo vrednost true , kar pomeni, da element izpolnjuje pogoj. Če je manj, potem vrni false - element ne izpolnjuje pogoja.

Posledično ob klicu metode numbers.every(condition) ponovi vse elemente matrike številk in jih enega za drugim posreduje funkciji pogoj. Če ta funkcija vrne true za vse elemente, potem metoda every() vrne true. Če se vsaj en element ne ujema s pogojem, potem metoda every() vrne false.

nekaj()

Metoda some() je podobna metodi every(), le da preveri, ali se vsaj en element ujema s pogojem. In v tem primeru metoda some() vrne true. Če v matriki ni nobenega elementa, ki bi se ujemal s pogojem, se vrne false:

Številke spremenljivk = [ 1, -12, 8, -4, 25, 42 ]; pogoj funkcije(vrednost, indeks, matrika) ( var rezultat = false; if (vrednost === 8) ( rezultat = res; ) vrni rezultat; ); var pass = numbers.some(pogoj); // prav

filter()

Metoda filter() tako kot some() in every() sprejema funkcijo pogoja. Toda hkrati vrne niz tistih elementov, ki izpolnjujejo ta pogoj:

Številke spremenljivk = [ 1, -12, 8, -4, 25, 42 ]; pogoj funkcije (vrednost, indeks, matrika) ( var. rezultat = laž; če (vrednost > 0) ( rezultat = resnično; ) vrni rezultat; ); var filteredNumbers = numbers.filter(stanje); for(var i=0; i< filteredNumbers.length; i++) document.write(filteredNumbers[i] + "
");

Izpis brskalnika:

1 8 25 42

forEach() in map()

Metodi forEach() in map() ponavljata elemente in na njih izvajata določene operacije. Če želite na primer izračunati kvadrate števil v matriki, lahko uporabite naslednjo kodo:

Številke spremenljivk = [1, 2, 3, 4, 5, 6]; for(var i = 0; i "); }

Toda z uporabo metode forEach() lahko poenostavite to konstrukcijo:

Številke spremenljivk = [1, 2, 3, 4, 5, 6]; funkcija square(value, index, array) ( var result = value * value; document.write("Kvadrat števila " + value + " je " + rezultat + "
"); ); numbers.forEach(kvadrat);

Metoda forEach() vzame kot parameter isto funkcijo, v katero se pri ponavljanju elementov posreduje trenutni element, ki se ponovi, in se na njem izvajajo operacije.

Metoda map() je podobna metodi forEach; kot parameter vzame tudi funkcijo, ki izvaja operacije na elementih matrike, vendar metoda map() vrne novo matriko z rezultati operacij na elementih matrike.

Na primer, uporabimo metodo zemljevida za izračun kvadratov števil v matriki:

Številke spremenljivk = [1, 2, 3, 4, 5, 6]; funkcija kvadrat(vrednost, indeks, polje) ( vrni rezultat = vrednost * vrednost; ); var squareArray = numbers.map(square); document.write(squareArray);

Funkcija, ki je posredovana metodi map(), sprejme trenutni element, ki se ponavlja, izvaja operacije na njem in vrne neko vrednost. Ta vrednost gre nato v nastalo squareArray

V tem članku si bomo ogledali standardna polja JavaScript s številskimi indeksi. Matrike so deklarirane z oglatimi oklepaji:

var fruits = ["jabolko", "pomaranča", "osel"]

Če želite ekstrahirati element, postavite njegov indeks v oglate oklepaje. Prvi indeks 0:

var fruits = ["Jabolko", "Pomaranča", "Osel"] opozorilo (sadje) opozorilo (sadje) opozorilo (sadje)

Dobimo lahko tudi dolžino matrike JavaScript:

var fruits = ["Jabolko", "Pomaranča", "Osel"] opozorilo (fruits.length)

Ups! Ustvarili smo niz z dvema sadjema in osličkom. Zdaj moramo odstraniti osla.

pop in push metode

Metoda pop v JavaScriptu odstrani element iz matrike in ga vrne.

Naslednji primer prikazuje, kako se "Donkey" pridobi iz matrike:

var fruits = ["Apple", "Orange", "Donkey"] alert("Odstranjujem "+fruits.pop()) // Zdaj imamo samo ["Apple","Orange"] alert("Now velikost matrike : "+sadje.dolžina) // osel odstranjen

Upoštevajte, da pop spremeni samo matriko.

Popov protipostavka je potisna metoda, ki matriki doda element. Na primer, pozabili smo dodati breskev:

var fruits = ["jabolko", "pomaranča"] fruits.push("breskev"); // zdaj imamo ["Jabolko", "Pomaranča", "Breskev"] opozorilo ("Zadnji element:"+sadje)

  1. Ustvarite niz slogov z elementi " Jazz”, “Blues”;
  2. Dodajte vrednost " Rock'n'Roll«;
  3. Zamenjajte drugo vrednost od konca z vrednostjo " Klasična". Na koncu bi morali dobiti niz: " Jazz”, ”Klasična”, ”Rock'n'Roll" Koda mora delovati za katero koli dolžino niza;
  4. Pridobite zadnjo vrednost iz matrike in jo prikažite prek opozorila.

rešitev

// 1 var styles = ["Jazz", "Bluez"] // 2 styles.push("Rock"n"Roll") // ali: styles = "Rock"n"Roll" // 3 styles = "Classic " // 4 opozorilo(styles.pop())

Metode Shift/unshift

Metodi shift/unshift delujeta na koncu matrike, vendar lahko uporabite tudi shift za premik elementov navzgor ( prva vrednost matrike se odstrani s premikom elementov). Metoda unshift omogoča JavaScriptu, da doda element v matriko od konca:

var fruits = ["Apple", "Orange"] var apple = fruits.shift() // zdaj imamo samo ["Orange"] fruits.unshift("Lemon") // zdaj imamo ["Lemon", " Orange"] opozorilo (fruits.length) // 2

Tako shift kot unshift lahko delujeta na več elementih hkrati:

var fruits = ["Apple"] fruits.push("Orange","Peach") fruits.unshift("Pineapple","Lemon") // zdaj je matrika videti takole: ["Pineapple", "Lemon", "Jabolko", "Pomaranča", "Breskev"]

Samostojna naloga

Napišite kodo za prikaz naključne vrednosti iz matrike arr prek opozorila:

var arr = ["Sliva","Pomaranča","Osel","Korenček","JavaScript"]

Opomba: koda za pridobitev naključnega števila od najmanjše do največje vrednosti (vključno) je naslednja:

var rand = min + Math.floor(Math.random()*(max+1-min))

rešitev

Izvleči moramo naključno število od 0 do arr.length-1 (vključno):

var arr = ["Plum","Orange","Donkey","Carrot","JavaScript"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

Ponavljanje po matriki

V JavaScriptu se ponavljanje skozi matriko izvede z uporabo zanke for:

var sadje = ["Ananas", "Limona", "Jabolko", "Pomaranča", "Breskev"] for(var i=0; i

Samostojna naloga

Ustvarite funkcijo find(arr,value), ki najde vrednost v dani matriki in vrne njen indeks ali -1, če vrednost ni najdena.

Na primer:

arr = [ "test", 2, 1.5, false ] najdi (arr, "test") // 0 najdi (arr, 2) // 1 najdi (arr, 1.5) // 2 najdi (arr, 0) // -1

rešitev

Možna rešitev bi lahko izgledala takole:

funkcija find(matrika, vrednost) ( ​​for(var i=0; i

Toda to ni pravilno, ker == ne definira razlike med 0 in false.

Pri delu z nizi v JavaScriptu je pravilneje uporabiti ===. Poleg tega najnovejši standard ES5 vključuje funkcijo Array#indexOf. Z njim lahko definiramo funkcijo, kot je ta:

funkcija find(array, value) ( ​​​​if (array.indexOf) return array.indexOf(value) for(var i=0; i

Še bolj pametno bi bilo definirati find s pogojem, da se preveri, ali metoda indexOf obstaja.

Samostojna naloga

Ustvarite funkcijo filterNumeric(arr), ki sprejme matriko in vrne novo matriko, ki vsebuje samo številske vrednosti iz arr.

Primer, kako naj bi to delovalo:

arr = ["a", 1, "b", 2]; arr = filterNumeric(arr); // zdaj arr =

rešitev

Rešitev je iteracija skozi matriko in dodajanje vrednosti v novo matriko, če so številske.

združiti in razdeliti

Včasih potrebujete hiter način za pretvorbo matrike JavaScript v niz. Temu je namenjena metoda pridružitve.

Združi matriko v niz z danim ločilom:

var fruits = ["limona","jabolko","pomaranča","breskev"]; var str = fruits.join(", "); opozorilo (str);

Povratno pretvorbo je enostavno izvesti z metodo razdelitve:

var fruits = "Jabolko, pomaranča, breskev"; var arr = fruits.split(","); // arr zdaj vsebuje ["jabolko", "pomaranča", "breskev"] alert(arr);

Samostojna naloga

Objekt vključuje lastnost className, ki vsebuje imena razredov, ločena s presledki:

Napišite funkcijo addClass(obj, cls), ki doda razred cls, vendar le, če ne obstaja:

ddClass(obj, "novo") // obj.className="odpri meni nov" addClass(obj, "odprto") // ni sprememb (razred že obstaja) addClass(obj, "jaz") // obj.className= "odpri meni nov jaz" opozorilo (obj.className) //

rešitev

Ime razreda in zanko morate razdeliti na dele. Če razreda ne najdemo, ga dodamo.

Zanka je bila rahlo optimizirana za povečanje zmogljivosti:

funkcija addClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) return ) elem.className += " "+cls ) var obj = ( className: "odpri meni" ) addClass(obj, "novo") addClass(obj, "open") alert(obj.className) // odpri meni novo

V zgornjem primeru je spremenljivka c definirana na začetku zanke in njen zadnji indeks je nastavljen na i.

Sama zanka se obdela v nasprotni smeri in se konča s pogojem i>=0. Ker je i>=0 hitreje preveriti kot i. Kaj v JavaScriptu pospeši iskanje v matriki.

Uporaba dolžine za obrezovanje niza

Z lastnostjo dolžine lahko matriko skrajšate takole:

Določite dolžino in brskalnik skrajša matriko.

Matrika je predmet, kaj torej to pomeni?

Pravzaprav je v JavaScriptu matrika predmet, skupaj s samodejno nastavitvijo dolžine in posebnimi metodami.

To se razlikuje od koncepta v drugih jezikih, kjer nizi predstavljajo neprekinjen segment pomnilnika. To se tudi razlikuje od čakalne vrste ali sklada, ki temelji na povezanih seznamih.

Neštevilski matrični ključi

Ključi so številke, vendar imajo lahko poljubno ime:

arr = arr = 5 arr.prop = 10 // ne delaj tega

V JavaScriptu so polja zgoščevalne tabele, ki imajo prednosti glede zmogljivosti, a tudi določene pomanjkljivosti.

Na primer, push/pop deluje samo na najbolj oddaljenih elementih niza, zato sta neverjetno hitra.

push deluje samo s koncem:

var arr = ["Moj", "matrika"] arr.push("nekaj") opozorilo (arr) // niz "matrika"

Metode shift/unshift so počasne, ker morajo preštevilčiti celotno matriko. Metoda spajanja lahko povzroči tudi spremembo oštevilčenja:


Torej sta shift/unshift počasnejša od push/pop. Večja kot je matrika, dlje potrebuje JavaScript za razvrščanje matrike.

Samostojna naloga

Kakšen bo rezultat? Zakaj?

arr = ["a", "b"] arr.push(funkcija() ( opozorilo(to))) arr() //?

rešitev

Ker so nizi predmeti, arr .. je pravzaprav klic metode za objekt, kot je obj metoda:

arr() // enako kot arr() // sintaktično nepravilno, vendar konceptualno enako: arr.2() // prepisano v istem slogu kot obj.method() this = arr v tem primeru je posredovano funkciji, zato se izpiše vsebina arr. arr = ["a", "b"] arr.push(funkcija() ( opozorilo(to))) arr() // "a","b",funkcija

Redki nizi, opis dolžine

Lastnost dolžine vam omogoča, da ne dobite velikosti matrike v JavaScriptu, ampak zadnji indeks + 1. To je pomembno, ko govorimo o redkih nizih, z "vrzelmi" v indeksih.

V naslednjem primeru bomo praznim sadežem dodali dva elementa, vendar bo vrednost dolžine ostala 100:

var fruits = // prazna matrika fruits = "Peach" fruits = "Apple" alert(fruits.length) // 100 (vendar sta v matriki le 2 elementa)

Če poskusite izpisati redko matriko, bo brskalnik vrnil manjkajoče vrednosti indeksa kot prazne elemente:

var fruits = // prazna matrika fruits = "Peach" fruits = "Apple" alert(fruits) // ,Peach,Apple (ali nekaj podobnega)

Toda niz je objekt z dvema ključema. Manjkajoče vrednosti ne zasedajo prostora.

Redke matrike se čudno obnašajo, ko se zanje uporabijo matrične metode. Nimajo pojma, da manjkajo indeksi:

var fruits = fruits = "Peach" fruits = "Apple" alert(fruits.pop()) // pop "Apple" (na indeks 9) alert(fruits.pop()) // pop nedoločen element (na indeks 8) )

Poskusite se izogibati redkim nizom. V vsakem primeru njihove metode ne bodo delovale normalno. Namesto tega uporabite Object.

Odstranjevanje iz niza

Kot vemo, so nizi objekti, zato lahko uporabimo delete, da odstranimo vrednost:

var arr = ["Pojdi", "na", "domov"] izbriši arr // zdaj arr = ["Pojdi", nedefinirano, "domov"] opozorilo(arr) // ni definirano

Vidite lahko, da je vrednost odstranjena, vendar ne na način, kot bi želeli, ker matrika vsebuje nedoločen element.

Operator za brisanje odstrani par ključ-vrednost in to je to. Seveda, ker je matrika le zgoščena vrednost, položaj odstranjenega elementa postane nedefiniran.

Najpogosteje moramo odstraniti element, ne da bi pustili "luknje" med indeksi. Pri tem nam bo pomagala še ena metoda.

metoda spajanja

Metoda spajanja lahko odstrani elemente in jih nadomesti v večdimenzionalnih nizih JavaScript. Njegova sintaksa je:

arr.splice(index, deleteCount[, elem1, ..., elemN])

Odstrani element deleteCount, ki se začne pri indeksu, in nato na njegovo mesto vstavi elem1, ..., elemN.

Oglejmo si nekaj primerov:

var arr = ["Pojdi", "na", "domov"] arr.splice(1, 1) // odstrani 1 element, ki se začne pri indeksu 1 alert(arr.join(",")) // ["Pojdi " , "home"] (1 element odstranjen)

Tako lahko uporabite splice, da odstranite en element iz matrike. Številke elementov polja so premaknjene, da zapolnijo prostor:

var arr = ["Pojdi", "na", "domov"] arr.splice(0, 1) // odstrani 1 element, začenši z indeksom 0 alert(arr) // "na" je postal prvi element

Naslednji primer prikazuje, kako zamenjati elemente:

Metoda spajanja vrne niz odstranjenih elementov:

var arr = ["Pojdi", "do", "domov", "zdaj"]; // odstranite prva 2 elementa var removed = arr.splice(0, 2) alert(removed) // "Pojdi", "na"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

Ta metoda lahko uporablja tudi negativni indeks, ki se šteje od konca matrike:

var arr = // za element -1 (predzadnji) // odstrani 0 elementov // in vstavi 3 in 4 arr.splice(-1, 0, 3, 4) alert(arr) // 1,2,3, 4.5

Samostojna naloga

Objekt vsebuje lastnost className, ki vsebuje imena razredov, ločena s presledki:

var obj = (className: "odpri meni")

Napišite funkcijo removeClass(obj, cls), ki odstrani razred cls, če je podan:

removeClass(obj, "open") // obj.className="menu" removeClass(obj, "blabla") // ni sprememb (ni razreda za odstranitev)

rešitev

Ime razreda morate razdeliti na dele in se pomikati po teh delih. Če se najde ujemanje, se odstrani iz niza predmetov JavaScript in nato doda nazaj na konec.

Optimizirajmo to malo:

funkcija removeClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) c.splice(i,1) ) elem.className = c.join(" ") ) var obj = ( className: "open menu" ) removeClass(obj, "open") removeClass(obj, "blabla") opozorilo (obj.className) // meni

V zgornjem primeru je spremenljivka c nastavljena na začetek zanke, i pa na njen zadnji indeks.

Sama zanka poteka v nasprotni smeri in se konča s pogojem i>=0. To se naredi, ker se i>=0 preveri hitreje kot i. Kar pospeši iskanje nepremičnin v c.

metoda rezine

Del matrike lahko izvlečete z uporabo metode slice(begin[, end]): var arr = ["Zakaj", "learn", "JavaScript"]; var arr2 = arr.slice(0,2) // zavzame 2 elementa, začenši pri 0 alert(arr2.join(", ")) // "Zakaj, nauči se"

Upoštevajte, da ta metoda ne spremeni števila elementov v matriki v JavaScriptu, ampak kopira njen del.

Drugi argument lahko izpustite, da dobite vse elemente, ki se začnejo pri določenem indeksu:

var arr = ["Zakaj", "nauči se", "JavaScript"]; var arr2 = arr.slice(1) // sprejme vse elemente od 1 alert(arr2.join(", ")) // "učenje, JavaScript"

Metoda podpira negativne indekse, tako kot String#slice.

obratna metoda

Druga uporabna metoda je obratna. Recimo, da želim dobiti zadnji del domene, kot je " com" od " my.site.com" To storite tako:

var domain = "my.site.com" var last = domain.split(".").reverse() alert(last)

Upoštevajte, da polja JavaScript podpirajo zapleteno sintakso (reverse()) za klicanje metode in nato pridobivanje elementa iz nastale matrike.

Ustvarite lahko daljše klice, kot je reverse() 0] arr.sort() opozorilo(arr) // 1, 15, 2

Zaženite zgornjo kodo. Dobili boste naročilo 1, 15, 2. To je zato, ker metoda vse pretvori v niz in privzeto uporablja leksikografski vrstni red.