Kako odrediti dužinu javascript niza i mnoge druge funkcije za rad s njima. Uklanjanje iz niza

U ovoj lekciji ćemo se upoznati s nizovima, naučiti kako ih kreirati, izvoditi operacije nad njihovim elementima, a također ćemo pogledati osnovne metode i svojstva koja su dostupna pri radu s njima.

Šta je niz u JavaScriptu?

Niz je uređena zbirka vrijednosti. Vrijednosti u ovoj kolekciji nazivaju se elementi. Svaki element u nizu ima svoj serijski broj (broj), koji se naziva indeks. Indeksi su numerisani počevši od 0.

Sljedeća slika prikazuje numerički niz koji se sastoji od 5 elemenata. Elementi ovog niza sadrže sljedeće podatke: 123 (indeks 0), 7 (indeks 1), 50 (indeks 2), -9 (indeks 3), 24 (indeks 4).

Kreiranje (deklarisanje) niza

Kreiranje nizova u JavaScript-u se obično vrši pomoću literal niza.

Literal niza sastoji se od uglatih zagrada koje sadrže listu elemenata odvojenih zarezom.

Na primjer:

Var prazan = ; // prazan niz var numbers = ; // numerički niz var arr = ; // niz koji sadrži različite tipove podataka

Vrijednosti u JavaScript nizu ne moraju biti istog tipa. One. Jedan niz može sadržavati vrijednosti različitih tipova podataka.

Određenom elementu niza pristupa se preko njegovog indeksa. Ova operacija se također naziva operacija indeksiranja.

Na primjer:

// kreiramo niz koji se sastoji od 3 elementa var smartphoneColors = ["Black", "White", "Grey"]; // prikazuje u konzoli pretraživača vrijednosti elemenata niza smartphoneColors sa indeksima 0 i 2 console.log("Vrijednost elementa niza smartphoneColors sa indeksom 0: " + smartphoneColors); // "Vrijednost elementa niza smartphoneColors sa indeksom 0: Black" console.log("Vrijednost elementa niza smartphoneColors sa indeksom 2: " + smartphoneColors); // "Vrijednost elementa niza smartphoneColors sa indeksom 0: Grey" // promijenite vrijednost elementa niza smartphoneColors sa indeksom 1 u "Red" smartphoneColors = "Red"; // ["Black", "Red", "Grey"] // postavite element niza smartphoneColors sa indeksom 3 na vrijednost "Blue" smartphoneColors = "Blue"; // ["Crna", "Crvena", "Siva", "Plava"]

Možete koristiti ne samo statičke vrijednosti, već i izraze kao vrijednosti elementa niza:

Var dužina A = 7, širina A = 5; var point = ;

Objekti se mogu koristiti kao vrijednosti elementa niza.

Var bodova = [ (x1: 5, y1: 3), (x1: 7, y1: 10), (x1: 12; y1: 0) ]; // niz koji se sastoji od 3 objekta

Drugi način za kreiranje niza sastoji se od pozivanja funkcije konstruktora niza.

Poziv funkcije konstruktora bez argumenata se koristi za kreiranje praznog niza.

Var empty = new Array(); // prazan niz

Ova metoda kreiranja niza je ekvivalentna literalu.

Ako navedete broj kao argument funkciji konstruktora, ona će kreirati niz koji će se sastojati od navedenog broja elemenata. Štaviše, svi ovi elementi će imati nedefinisanu vrednost.

Var arr = novi niz(5); // niz koji se sastoji od 5 elemenata (vrijednosti elemenata su nedefinirane)

Ako proslijedite nekoliko vrijednosti ili jednu nenumeričku vrijednost funkciji konstruktora u zagradama, ona će kreirati niz od argumenata koji su joj proslijeđeni.

Za razliku od mnogih drugih programskih jezika, nizovi u JavaScriptu automatski mijenjaju svoju veličinu, tj. oni su inherentno dinamični. Takvim nizovima nije potrebno davati nikakve dimenzije. Još jedna karakteristična karakteristika JavaScript nizova je da različiti elementi istog niza mogu sadržavati različite tipove podataka.

svojstvo dužine (dužina niza)

Određivanje dužine niza (broja elemenata) se vrši pomoću svojstva dužine.

//kreirajte niz navođenjem vrijednosti elemenata u funkciji niza var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dodijelimo varijablu lengthArray dužini polja volumeHDDs var lengthArray = volumeHDDs.length;

Kako dobiti prvi element niza

Dobijanje vrijednosti prvog elementa niza se vrši navođenjem broja 0 u uglastim zagradama ovog niza:

//kreiranje niza koji se sastoji od 3 elementa var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dobivanje vrijednosti prvog elementa niza var firstValue = volumeHDDs;

Kako dobiti posljednji element niza

Vrijednost posljednjeg elementa niza se dobija specificiranjem izraza ime_niza.length-1 u uglastim zagradama ovog niza:

//kreiranje niza koji se sastoji od 3 elementa var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dobivanje vrijednosti posljednjeg elementa niza var lastValue = volumeHDDs;

Iteracija preko niza

Iteracija kroz elemente niza se vrši pomoću for petlje.

Na primjer, prođimo kroz sve elemente niza i prikažimo njihove vrijednosti u konzoli pretraživača (F12):

//kreiranje niza nameStudents, koji se sastoji od 4 elementa var nameStudents = new Array("Petya","Vasya","Kolya","Maxim"); //iteriraj elemente niza od 0 do dužine niza-1 za (var i=0; i<= nameStudents.length-1; i++) { console.log(i+1 + " элемент массива = " + nameStudents[i]); }

Koja je svrha operatora delete?

Operator delete se ne koristi za uklanjanje elementa iz niza, već za dodjelu nedefinirane vrijednosti datom elementu niza.

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

Funkcije za rad sa nizovima (metode objekata niza)

Objekt Array sadrži sljedeće metode (funkcije) za rad s nizovima:

  • smjena
  • unshift
  • slice
  • splice
  • podijeliti
  • obrnuto

Push metoda (dodavanje elementa na kraj niza)

Push metoda je dizajnirana da doda element na kraj niza. Vrijednost ovog elementa je navedena kao parametar za ovu metodu. Kao rezultat toga, push metoda vraća broj elemenata u nizu, uzimajući u obzir ono što je dodano.

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

metoda pop (uklanjanje posljednjeg elementa iz niza)

Pop metoda je dizajnirana da ukloni posljednji element iz niza. Ova metoda nema parametre. Kao rezultat, vraća vrijednost posljednjeg (uklonjenog) elementa niza.

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

Shift metoda (uklanjanje prvog elementa iz niza)

Metoda pomaka je dizajnirana da ukloni prvi element iz niza, tj. element koji ima indeks 0. Svi ostali elementi niza se pomjeraju na početak, tj. za svaki od njih indeks se smanjuje za 1. Ova metoda kao rezultat vraća vrijednost uklonjenog elementa.

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

unshift metoda (dodavanje elementa na početak niza)

Metoda unshift dizajnirana je za dodavanje elementa na početak niza (prije ostalih elemenata). Vrijednost ovog elementa je navedena kao parametar za ovu metodu. Kao rezultat, ova metoda vraća broj elemenata u nizu, uzimajući u obzir ono što je dodano.

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

metoda slice (kopiranje dijela niza)

Metoda slice je dizajnirana da kopira dio niza. Međutim, ne mijenja originalni niz, već kao rezultat vraća novi niz koji se sastoji od odabranih elemenata.

Metoda slice ima 2 parametra:

  • 1 parametar (obavezno) - namijenjen je za označavanje indeksa elementa iz kojeg se započinju kopiranje elemenata;
  • Parametar 2 (opciono) - namijenjen je za označavanje indeksa elementa u koji je potrebno kopirati (u ovom slučaju nije uključen u novi niz). Ako ga ne navedete, tada će se kopirati elementi do kraja navedenog niza.
var namePlanets = ["Venera", "Merkur", "Zemlja", "Mars", "Jupiter"]; var newNamePlanets = namePlanets.slice(2, 4); // ["Zemlja", "Mars"]

Metoda spajanja (promjena sadržaja niza)

Metoda spajanja je dizajnirana da promijeni sadržaj niza. Može se koristiti i za dodavanje elemenata nizu i za njihovo uklanjanje.

Sintaksa metode spajanja je:

Array.splice(startIndex, deleteCount [, element1[, element2[, ...]]]); /* startIndex (obavezno) - početni indeks elementa od kojeg se počinje mijenjati niz. Ako navedete broj veći od dužine niza kao startIndex, tada će početni indeks biti postavljen na kraj niza. Ako navedete negativan broj kao startIndex, tada će se početni element računati od kraja. deleteCount (obavezno) - broj koji pokazuje koliko elemenata treba izbrisati iz niza. Ako elementi ne moraju biti obrisani iz niza, tada deleteCount mora biti postavljen na 0. Nakon toga, morate navesti barem jedan novi element koji će se dodati u niz. Ako navedete broj kao deleteCount koji će premašiti broj preostalih elemenata u nizu, počevši od startIndex, tada će u ovom slučaju i dalje biti obrisani (tj. svi elementi do kraja niza, počevši od početnog indeksa) element1, element2, .. (opciono) - elementi koje treba dodati u niz. */

Primjeri korištenja metode spajanja.

Korištenje metode spajanja za uklanjanje nekih elemenata iz niza.

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

Korištenje metode spajanja za uklanjanje elementa iz niza i dodavanje novih u njega.

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

Korištenje metode spajanja samo za dodavanje novih elemenata u niz.

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živanja (pretvaranje niza u niz)

Metoda spajanja je dizajnirana da spoji sve elemente niza u niz.

Sintaksa metode pridruživanja:

Array.join(); /* separator (opciono) - separator koji se koristi kao povezujući niz između svakog elementa niza. Ako ovaj parametar nije naveden, "," će se koristiti kao povezujući niz. Ako navedete prazan niz kao parametar, tada elementi niza u vraćenom nizu neće biti ničim odvojeni */

Var berries = ["Grožđe", "Grožđe", "Rizza", "Šipak"]; var berriesStr1 = berries.join(); // "Grožđe, grožđe, ribizla, šipak" var berriesStr2 = berries.join(""); // "GrožđeGrožđeCurrantŠipak" var berriesStr3 = berries.join(", "); // "Grožđe, grožđe, ribizla, šipak" var berriesStr4 = berries.join(" + "); // "Grožđe + Grožđe + Ribizla + Šipak"

Ako koristite ne-string kao separator, on će biti konvertovan u string.

Var berries = ["Grožđe", "Grožđe", "Rizza", "Šipak"]; var berriesStr1 = berries.join(false); // "GrapesfalseGrapesfalseCurrantfalseRosehip" var berriesStr2 = berries.join(4/2); // "Grapes2Grapes2Currant2Rose Hip" Elementi niza koji imaju null ili undefined kao vrijednost bit će bačeni na prazan niz. var arr = ; var arrStr = arr.join(", "); // "0, 5, -4"

Pretvaranje niza u niz - split

Metoda split je dizajnirana da konvertuje string u niz. Ova metoda ima jedan parametar, kao koji možete odrediti string, na osnovu kojeg će se ovaj string podijeliti u niz stringova.

Var strElementComputers = "Sistemska jedinica, Monitor, Tastatura, Miš, Zvučnici, Štampač"; var elementComputers = strElementComputers.split(", "); console.log("Broj elemenata u nizu: " + elementComputers.length); za (var i=0; i<= elementComputers.length-1; i++) { console.log(i + " элемент массива = " + elementComputers[i]); }

Promjena redoslijeda elemenata niza obrnutim redoslijedom - obrnuto

Reverzna metoda je dizajnirana da promijeni redoslijed elemenata niza obrnutim redoslijedom.

Var namePlanets = new Array("Venera","Mercury","Earth","Mars"); namePlanets.reverse(); console.log("Broj elemenata u nizu: " + namePlanets.length); za (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

Sortiranje elemenata niza - sortiranje

Metoda sortiranja se koristi za sortiranje elemenata niza. Podrazumevano, ova metoda sortira niz kao nizove.

Var namePlanets = new Array("Venera","Mercury","Earth","Mars"); namePlanets.sort(); console.log("Broj elemenata u nizu: " + namePlanets.length); za (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

21.06.2017 u 12:17

Da biste izračunali veličinu niza objekata u JavaScript-u, koristite svojstvo dužine niza.

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

Nizovi u javascriptu mogu imati nedostajuće indekse. Na primjer

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

Svojstvo dužine vraća maksimalni indeks niza + 1. tj. u datom primjeru, dužina = 5.

Izračunavanje broja elemenata u nizu u javascriptu

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

Primjer upotrebe

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

Također možete dodijeliti vrijednost svojstvu dužine. Ovo vam omogućava da smanjite dužinu postojećeg niza.

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

Izračunavanje veličine niza u bajtovima u javascriptu

Nizovi su regularni objekti, tako da se izračunavanje veličine niza u bajtovima ne razlikuje od izračunavanja veličine bilo kojeg drugog objekta. Nažalost, javascript ne pruža API za izračunavanje veličine, tako da ćete morati sami da je izračunate. To se radi na sljedeći način: prolazimo kroz sva svojstva objekta; ako je svojstvo primitivnog tipa, dodajemo veličinu instance ovog tipa ukupnom rezultatu; ako svojstvo sadrži objekt, rekurzivno izračunavamo njegovu veličinu.

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": bajtovi += 4; break; case "object": for(var key in obj) ( bytes += sizeOf(obj); ) break; ) ) vratiti bajtove ; );

Metoda nije tačna i ima mnogo problema - na primjer, postoji mogućnost ulaska u beskonačnu petlju.

Posljednje ažuriranje: 26.03.2018

Objekt Array predstavlja niz i pruža niz svojstava i metoda pomoću kojih možemo manipulirati nizom.

Inicijalizacija niza

Možete kreirati prazan niz koristeći uglaste zagrade ili konstruktor niza:

Var users = new Array(); var ljudi = ; console.log(users); // Niz console.log(ljudi); // Niz

Možete odmah inicijalizirati niz sa određenim brojem elemenata:

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

Možete definirati niz i dodavati mu nove elemente dok idete:

Var users = new Array(); korisnici = "Tom"; korisnici = "Kate"; console.log(users); // "Tom" console.log(users); // nedefinisano

Nije važno što je po defaultu niz kreiran sa nultom dužinom. Koristeći indekse, možemo zamijeniti jedan ili drugi element u nizu određenim indeksom.

dužina

Da biste saznali dužinu niza, koristite svojstvo dužine:

Var fruit = new Array(); voće = "jabuke"; voće = "kruške"; voće = "šljive"; document.write("U nizu fruit " + fruit.length + " element:
"); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

U stvari, dužina niza će biti indeks posljednjeg elementa plus jedan. Na primjer:

Var users = new Array(); // ima 0 elemenata u nizu users = "Tom"; korisnici = "Kate"; korisnici = "Sam"; for(var i=0; i

Izlaz iz pretraživača:

Tom Kate undefined undefined Sam

Uprkos činjenici da nismo dodali elemente za indekse 2 i 3, dužina niza u ovom slučaju će biti broj 5. Samo će elementi sa indeksima 2 i 3 imati nedefinisanu vrednost.

Kopiranje niza. kriška()

Kopiranje niza može biti plitko ili plitko (plitka kopija) i duboko (duboka kopija).

Za plitko kopiranje, dovoljno je varijabli dodijeliti vrijednost druge varijable koja pohranjuje niz:

Var korisnici = ["Tom", "Sam", "Bill"]; console.log(users); // ["Tom", "Sam", "Bill"] var people = users; // plitko kopiranje ljudi = "Mike"; // mijenjamo drugi element console.log(users); // ["Tom", "Mike", "Bill"]

U ovom slučaju, varijabla people, nakon kopiranja, pokazat će na isti niz kao i varijabla users. Dakle, kada se mijenjaju elementi u ljudima, mijenjat će se i elementi u korisnicima, jer se u stvari radi o istom nizu.

Ovo ponašanje nije uvijek poželjno. Na primjer, želimo da varijable upućuju na odvojene nizove nakon kopiranja. I u ovom slučaju, možete koristiti duboko kopiranje pomoću metode slice():

Var korisnici = ["Tom", "Sam", "Bill"]; console.log(users); // ["Tom", "Sam", "Bill"] var people = users.slice(); // duboka kopija ljudi = "Mike"; // mijenjamo drugi element console.log(users); // ["Tom", "Sam", "Bill"] console.log(people); // ["Tom", "Mike", "Bill"]

U ovom slučaju, nakon kopiranja, varijable će upućivati ​​na različite nizove i možemo ih mijenjati odvojeno jedna od druge.

Metoda slice() također vam omogućava da kopirate dio niza:

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

Metodi slice() se prosljeđuju početni i završni indeksi, koji se koriste za preuzimanje vrijednosti iz niza. To jest, u ovom slučaju, selekcija u novi niz ide od indeksa 1 do indeksa 4, ne uključujući. A pošto indeksiranje niza počinje od nule, novi niz će sadržavati drugi, treći i četvrti element.

guranje()

Metoda push() dodaje element na kraj niza:

Var voće = ; fruit.push("jabuke"); fruit.push("kruške"); fruit.push("šljive"); fruit.push("trešnja","kajsija
"); document.write(voće); // jabuke, kruške, šljive, trešnje, kajsije

pop()

Metoda pop() uklanja posljednji element iz niza:

Var voće = ["jabuke", "kruške", "šljive"]; var lastFruit = fruit.pop(); // izdvojiti posljednji element iz niza document.write(lastFruit + "
"); document.write("U nizu fruit " + fruit.length + " element:
"); for(var i=0; i ");

Izlaz iz pretraživača:

Šljive Voćni niz ima 2 elementa: jabuke kruške

shift()

Metoda shift() dohvaća i uklanja prvi element iz niza:

Var voće = ["jabuke", "kruške", "šljive"]; var firstFruit = fruit.shift(); document.write(firstFruit + "
"); document.write("U nizu fruit " + fruit.length + " element:
"); for(var i=0; i ");

Izlaz iz pretraživača:

Jabuke Voćni niz ima 2 elementa: kruške šljive

unshift()

Metoda unshift() dodaje novi element na početak niza:

Var voće = ["jabuke", "kruške", "šljive"]; fruit.unshift("kajsije"); document.write(voće);

Izlaz iz pretraživača:

Kajsije, jabuke, kruške, šljive

Uklanjanje elementa po indeksu. spoj ()

Metoda splice() uklanja elemente na određenom indeksu. Na primjer, uklanjanje elemenata iz trećeg indeksa:

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

Metoda slice vraća uklonjene elemente.

U ovom slučaju, brisanje se dešava od početka niza. Ako proslijedite negativan indeks, tada će se brisanje izvršiti s kraja niza. Na primjer, uklonimo posljednji element:

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

Dodatna verzija metode vam omogućava da odredite završni indeks za brisanje. Na primjer, izbrišemo indeks od prvog do trećeg:

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

Druga verzija metode spajanja omogućava vam da umetnete nove elemente umjesto izbrisanih:

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

U ovom slučaju brišemo tri elementa od 1. do 3. indeksa i umjesto njih ubacujemo dva elementa.

concat()

Concat() metoda se koristi za kombinovanje nizova:

Var voće = ["jabuke", "kruške", "šljive"]; var povrće = ["paradajz", "krastavci", "krompir"]; var proizvodi = fruit.concat(povrće); for(var i=0; i< products.length; i++) document.write(products[i] + "
");

U ovom slučaju nije potrebno kombinovati samo nizove istog tipa. Moguće su različite vrste:

Var voće = ["jabuke", "kruške", "šljive"]; var cijene = ; var proizvodi = fruit.concat(prices);

pridruži se ()

Metoda join() spaja sve elemente niza u jedan niz:

Var voće = ["jabuke", "kruške", "šljive", "kajsije", "breskve"]; var fruitString = fruit.join(", "); document.write(fruitString);

Metodi join() se prosljeđuje separator između elemenata niza. U ovom slučaju, zarez i razmak (", ") će se koristiti kao separator.

sortiraj()

Metoda sort() sortira niz u rastućem redoslijedu:

Var voće = ["jabuke", "kruške", "šljive", "kajsije", "breskve"]; fruit.sort(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izlaz iz pretraživača:

Kajsije kruške breskve šljive jabuke

obrnuto ()

Reverse() metoda preokreće niz unatrag:

Var voće = ["jabuke", "kruške", "šljive", "kajsije", "breskve"]; fruit.reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izlaz iz pretraživača:

Breskve kajsije šljive kruške jabuke

U kombinaciji s metodom sort() možete sortirati niz u opadajućem redoslijedu:

Var voće = ["jabuke", "kruške", "šljive", "kajsije", "breskve"]; fruit.sort().reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Izlaz iz pretraživača:

Jabuke šljive breskve kruške kajsije

Pronalaženje indeksa elementa

Metode indexOf() i lastIndexOf() vraćaju indeks prvog i posljednjeg uključivanja elementa u niz. Na primjer:

Var voće = ["jabuke", "kruške", "šljive", "jabuke", "kruške"]; var firstIndex = fruit.indexOf("jabuke"); var lastIndex = fruit.lastIndexOf("jabuke"); var otherIndex = fruit.indexOf("trešnje"); document.write(firstIndex); // 0 document.write(lastIndex); // 3 document.write(otherIndex); // -1

firstIndex ima vrijednost 0 jer je prvo uključivanje linije "jabuke" u niz na indeksu 0, a posljednje na indeksu 3.

Ako element nije u nizu, tada u ovom slučaju metode indexOf() i lastIndexOf() vraćaju vrijednost -1.

svaki()

Metoda every() provjerava da li svi elementi odgovaraju određenom uslovu:

Var brojevi = [ 1, -12, 8, -4, 25, 42 ]; stanje funkcije(vrijednost, indeks, niz) ( var rezultat = netačno; if (vrijednost > 0) ( rezultat = istina; ) vrati rezultat; ); var proslijeđen = brojevi.svaki(uvjet); document.write(prošlo); // false

Every() metodi se prosljeđuje funkcija koja predstavlja uvjet kao parametar. Ova funkcija uzima tri parametra:

Uvjet funkcije (vrijednost, indeks, niz) ( )

Parametar vrijednosti predstavlja trenutni element niza koji se ponavlja, parametar indeksa predstavlja indeks tog elementa, a parametar niza prenosi referencu na niz.

U ovoj funkciji možemo provjeriti usklađenost proslijeđene vrijednosti elementa s nekim uslovom. Na primjer, u ovom primjeru provjeravamo svaki element niza da vidimo da li je veći od nule. Ako je veći, onda vraćamo vrijednost true , odnosno element ispunjava uvjet. Ako je manje, onda vratite false - element ne ispunjava uslov.

Kao rezultat toga, kada se pozove metoda numbers.every(condition), ona iterira kroz sve elemente niza brojeva i prosljeđuje ih jedan po jedan funkciji uvjeta. Ako ova funkcija vraća true za sve elemente, onda metoda every() vraća true. Ako barem jedan element ne odgovara uvjetu, tada metoda every() vraća false.

neki ()

Metoda some() je slična metodi every(), samo što provjerava da li barem jedan element odgovara nekom uslovu. I u ovom slučaju, metoda some() vraća true . Ako nema elemenata koji odgovaraju uslovu u nizu, vraća se false:

Var brojevi = [ 1, -12, 8, -4, 25, 42 ]; stanje funkcije(vrijednost, indeks, niz) ( var rezultat = netačno; if (vrijednost === 8) ( rezultat = istina; ) vrati rezultat; ); var prošao = brojevi.neki(stanje); // istinito

filter()

Metoda filter(), poput some() i every(), prihvaća funkciju uvjeta. Ali u isto vrijeme vraća niz onih elemenata koji ispunjavaju ovaj uvjet:

Var brojevi = [ 1, -12, 8, -4, 25, 42 ]; stanje funkcije(vrijednost, indeks, niz) ( var rezultat = netačno; if (vrijednost > 0) ( rezultat = istina; ) vrati rezultat; ); var filteredNumbers = numbers.filter(stanje); for(var i=0; i< filteredNumbers.length; i++) document.write(filteredNumbers[i] + "
");

Izlaz iz pretraživača:

1 8 25 42

forEach() i map()

Metode forEach() i map() ponavljaju elemente i izvode određene operacije na njima. Na primjer, da biste izračunali kvadrate brojeva u nizu, možete koristiti sljedeći kod:

Var brojevi = [1, 2, 3, 4, 5, 6]; for(var i = 0; i "); }

Ali pomoću metode forEach() možete pojednostaviti ovu konstrukciju:

Var brojevi = [1, 2, 3, 4, 5, 6]; funkcija kvadrat(vrijednost, indeks, niz) ( var rezultat = vrijednost * vrijednost; document.write("Kvadrat broja " + vrijednost + " je " + rezultat + "
"); ); numbers.forEach(square);

Metoda forEach() kao parametar uzima istu funkciju, u koju se, prilikom iteracije preko elemenata, prosljeđuje trenutni element koji se ponavlja i na njemu se izvode operacije.

Metoda map() je slična forEach metodi; ona također uzima kao parametar funkciju koja izvodi operacije nad elementima niza, ali metoda map() vraća novi niz s rezultatima operacija nad elementima niza.

Na primjer, koristimo metodu mape za izračunavanje kvadrata brojeva u nizu:

Var brojevi = [1, 2, 3, 4, 5, 6]; funkcija kvadrat(vrijednost, indeks, niz) (vrati rezultat = vrijednost * vrijednost; ); var squareArray = numbers.map(square); document.write(squareArray);

Funkcija koja je proslijeđena metodi map() prima trenutni element koji se ponavlja, izvodi operacije na njemu i vraća neku vrijednost. Ova vrijednost zatim ide u rezultirajući squareArray

U ovom članku ćemo pogledati standardne JavaScript nizove sa numeričkim indeksima. Nizovi se deklariraju pomoću uglastih zagrada:

var fruits = ["Jabuka", "Naranča", "Magarac"]

Da biste izdvojili element, stavite njegov indeks u uglaste zagrade. Prvi indeks 0 :

var fruits = ["Jabuka", "Narandža", "Magarac"] upozorenje(voće) upozorenje(voće) upozorenje(voće)

Takođe možemo dobiti dužinu JavaScript niza:

var fruits = ["Jabuka", "Narandža", "Magarac"] upozorenje(fruits.length)

Ups! Napravili smo niz sa dva voća i magarcem. Sada moramo ukloniti magarca.

pop i push metode

Metoda pop u JavaScript-u uklanja element iz niza i vraća ga.

Sljedeći primjer pokazuje kako se "Magarac" preuzima iz niza:

var fruits = ["Apple", "Orange", "Donkey"] alert("Uklanjam "+fruits.pop()) // Sada imamo samo ["Apple","Orange"] alert("Sada veličina niza: "+fruits.length) // magarac uklonjen

Imajte na umu da pop modificira sam niz.

Popov pandan je push metoda, koja dodaje element u niz. Na primjer, zaboravili smo dodati breskvu:

var fruits = ["Jabuka", "Narandža"] fruits.push("Breskva"); // sada imamo ["Jabuka", "Narandža", "Breskva"] upozorenje("Zadnji element:"+voće)

  1. Kreirajte niz stilova sa elementima “ Jazz”, “Blues”;
  2. Dodajte vrijednost " Roken rol«;
  3. Zamijenite drugu vrijednost s kraja vrijednošću " Classic". Trebali biste završiti s nizom: “ Jazz”, ”Classic”, ”Roken rol" Kod bi trebao raditi za bilo koju dužinu niza;
  4. Preuzmi posljednju vrijednost iz niza i prikaži je putem alert.

Rješenje

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

Metode Shift/Unshift

Metode shift/unshift rade na kraju niza, ali možete koristiti i shift za pomicanje elemenata prema gore ( prva vrijednost niza se uklanja pomicanjem elemenata). Metoda unshift dozvoljava JavaScript-u da doda element nizu od kraja:

var fruits = ["Apple", "Orange"] var apple = fruits.shift() // sada imamo samo ["Orange"] fruits.unshift("Limun") // sada imamo ["Limun", " Naranča"] upozorenje(fruits.length) // 2

I shift i unshift mogu raditi na više elemenata odjednom:

var fruits = ["Apple"] fruits.push("Orange","Peach") fruits.unshift("Ananas","Limun") // sada niz izgleda ovako: ["Ananas", "Limun", "jabuka" ", "narandža", "breskva"]

Zadatak koji se samostalno obavlja

Napišite kod za prikaz nasumične vrijednosti iz niza arr putem upozorenja:

var arr = ["Šljiva","Narandža","Magarac","Šargarepa","JavaScript"]

Napomena: Kod za dobivanje slučajnog broja od minimalne do maksimalne vrijednosti (uključivo) je sljedeći:

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

Rješenje

Moramo izdvojiti slučajni broj od 0 do arr.length-1 (uključivo):

var arr = ["Šljiva","Narandža","Magarac","Šargarepa","JavaScript"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

Iteracija preko niza

U JavaScriptu, ponavljanje niza se vrši pomoću for petlje:

var fruits = ["Ananas", "Limun", "Jabuka", "Narandža", "Breskva"] for(var i=0; i

Zadatak koji se samostalno obavlja

Kreirajte funkciju find(arr,value) koja pronalazi vrijednost u datom nizu i vraća njen indeks ili -1 ako vrijednost nije pronađena.

Na primjer:

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

Rješenje

Moguće rješenje bi moglo izgledati ovako:

funkcija pronađi (niz, vrijednost) ( for(var i=0; i

Ali ovo je netačno jer == ne definira razliku između 0 i false .

Ispravnije je koristiti === kada radite sa nizovima u JavaScript-u. Dodatno, najnoviji ES5 standard uključuje funkciju Array#indexOf. Pomoću njega možemo definirati funkciju ovako:

funkcija find(niz, vrijednost) (if (array.indexOf) vrati array.indexOf(value) for(var i=0; i

Još bi pametnije bilo definisati find sa uslovom da se proveri da li metoda indexOf postoji.

Zadatak koji se samostalno obavlja

Kreirajte funkciju filterNumeric(arr) koja uzima niz i vraća novi niz koji sadrži samo numeričke vrijednosti iz arr.

Primjer kako bi ovo trebalo funkcionirati:

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

Rješenje

Rješenje je iteracija kroz niz i dodavanje vrijednosti u novi niz ako su numeričke.

spojiti i podijeliti

Ponekad vam je potreban brz način da konvertujete JavaScript niz u string. Ovome služi metoda pridruživanja.

Povezuje niz u niz koristeći dati graničnik:

var fruits = ["Limun","Jabuka","Narandža","Breskva"]; var str = fruits.join(", "); upozorenje(str);

Obrnuta konverzija se lako izvodi pomoću split metode:

var fruits = "Jabuka,Narandža, Breskva"; var arr = fruits.split(","); // arr sada sadrži ["Apple", "Orange", "Peach"] alert(arr);

Zadatak koji se samostalno obavlja

Objekt uključuje svojstvo className, koje sadrži nazive klasa, odvojene razmacima:

Napišite funkciju addClass(obj, cls) koja dodaje klasu cls, ali samo ako ne postoji:

ddClass(obj, "new") // obj.className="open menu new" addClass(obj, "open") // nema promjena (klasa već postoji) addClass(obj, "me") // obj.className= "otvori meni novi ja" alert(obj.className) //

Rješenje

Morate podijeliti className i petlju na dijelove. Ako klasa nije pronađena, onda se dodaje.

Petlja je malo optimizirana za povećanje performansi:

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: "open menu" ) addClass(obj, "new") addClass(obj, "open") alert(obj.className) // otvori meni novo

U gornjem primjeru, varijabla c je definirana na početku petlje, a njen posljednji indeks je postavljen na i.

Sama petlja se obrađuje u suprotnom smjeru, završavajući uvjetom i>=0. Zato što je i>=0 brže za provjeru od i . Ono što u JavaScriptu ubrzava pretragu u nizu.

Korištenje dužine za obrezivanje niza

Koristeći svojstvo dužine, možete skratiti niz ovako:

Vi određujete dužinu i pretraživač skraćuje niz.

Niz je objekat, pa šta to znači?

U stvari, u JavaScript-u, niz je objekat, zajedno sa automatskim podešavanjem dužine i posebnim metodama.

Ovo se razlikuje od koncepta u drugim jezicima, gdje nizovi predstavljaju neprekidni segment memorije. Ovo se također razlikuje od reda ili steka zasnovanog na povezanim listama.

Nenumerički ključevi niza

Ključevi su brojevi, ali mogu imati bilo koje ime:

arr = arr = 5 arr.prop = 10 // nemoj ovo raditi

U JavaScript-u, nizovi su hash tabele, koje imaju prednosti u performansama, ali i određene nedostatke.

Na primjer, push/pop radi samo na najudaljenijim elementima niza, tako da su nevjerovatno brzi.

push radi samo s krajem:

var arr = ["Moj", "niz"] arr.push("nešto") alert(arr) // niz "niz"

Metode shift/unshift su spore jer treba da prenumerišu cijeli niz. Metoda spajanja također može uzrokovati promjenu numeracije:


Dakle, prebacivanje/isključivanje je sporije od pritiska/pop-a. Što je niz veći, JavaScriptu je duže potrebno da sortira niz.

Zadatak koji se samostalno obavlja

Šta će biti rezultat? Zašto?

arr = ["a", "b"] arr.push(function() ( alert(this) )) arr() // ?

Rješenje

Pošto su nizovi objekti, arr .. je zapravo poziv metode na objektu kao što je obj metoda:

arr() // isto kao arr() // sintaktički neispravan, ali konceptualno isti: arr.2() // prepisano u istom stilu kao obj.method() this = arr u ovom slučaju se prosljeđuje funkciji, tako da se sadržaj arr ispisuje. arr = ["a", "b"] arr.push(function() ( alert(this) )) arr() // "a","b",function

Retki nizovi, opis dužine

Svojstvo dužine vam omogućava da dobijete ne veličinu niza u JavaScriptu, već posljednji indeks + 1. Ovo je važno kada govorimo o rijetkim nizovima, sa „prazninama“ u indeksima.

U sljedećem primjeru ćemo dodati dva elementa praznim plodovima, ali vrijednost dužine će ostati 100:

var fruits = // prazan niz fruits = "Peach" fruits = "Apple" alert(fruits.length) // 100 (ali postoje samo 2 elementa u nizu)

Ako pokušate da ispišete retki niz, pretraživač će vratiti nedostajuće vrednosti indeksa kao prazne elemente:

var fruits = // prazan niz fruits = "breskva" fruits = "Jabuka" upozorenje(voće) // ,breskva,jabuka (ili nešto slično)

Ali niz je objekat sa dva ključa. Vrijednosti koje nedostaju ne zauzimaju prostor.

Retki nizovi se ponašaju čudno kada se na njih primenjuju metode niza. Oni nemaju pojma da indeksi nedostaju:

var fruits = fruits = "Peach" fruits = "Apple" alert(fruits.pop()) // pop "Apple" (do indeksa 9) alert(fruits.pop()) // iskoči neodređeni element (u indeks 8 )

Pokušajte izbjeći rijetke nizove. U svakom slučaju, njihove metode neće raditi normalno. Umjesto toga koristite Object.

Uklanjanje iz niza

Kao što znamo, nizovi su objekti, tako da možemo koristiti delete da uklonimo vrijednost:

var arr = ["Idi", "do", "doma"] obriši arr // sada arr = ["Idi", nedefinirano, "doma"] upozorenje(arr) // nije definirano

Možete vidjeti da je vrijednost uklonjena, ali ne na način na koji bismo željeli, jer niz sadrži neodređeni element.

Operator delete uklanja par ključ-vrijednost i to je to. Naravno, pošto je niz samo heš, pozicija uklonjenog elementa postaje nedefinirana.

Najčešće moramo ukloniti element bez ostavljanja „rupa“ između indeksa. Postoji još jedna metoda koja će nam pomoći u tome.

metoda spajanja

Metoda spajanja može ukloniti elemente i zamijeniti ih u JavaScript višedimenzionalnim nizovima. Njegova sintaksa je:

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

Uklanja element deleteCount počevši od indeksa, a zatim umeće elem1, ..., elemN na njegovo mjesto.

Pogledajmo nekoliko primjera:

var arr = ["Idi", "do", "doma"] arr.splice(1, 1) // ukloni 1 element koji počinje od indeksa 1 alert(arr.join(",")) // ["Idi " , "home"] (1 element je uklonjen)

Dakle, možete koristiti spajanje da uklonite jedan element iz niza. Brojevi elemenata niza se pomiču kako bi popunili prostor:

var arr = ["Idi", "do", "doma"] arr.splice(0, 1) // ukloniti 1 element, počevši od indeksa 0 alert(arr) // "do" je postao prvi element

Sljedeći primjer pokazuje kako zamijeniti elemente:

Metoda spajanja vraća niz uklonjenih elemenata:

var arr = ["Idi", "do", "kući", "sada"]; // ukloni prva 2 elementa var uklonjen = arr.splice(0, 2) alert(removed) // "Idi", "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"

Ova metoda također može koristiti negativni indeks, koji se računa od kraja niza:

var arr = // za element -1 (predzadnji) // uklonite 0 elemenata, // i ubacite 3 i 4 arr.splice(-1, 0, 3, 4) alert(arr) // 1,2,3, 4.5

Zadatak koji se samostalno obavlja

Objekt sadrži svojstvo className, koje sadrži nazive klasa, odvojene razmacima:

var obj = (ime klase: "otvori meni")

Napišite funkciju removeClass(obj, cls) koja uklanja klasu cls ako je data:

removeClass(obj, "open") // obj.className="menu" removeClass(obj, "blabla") // nema promjena (nema klase za uklanjanje)

Rješenje

Morate podijeliti className na dijelove i proći kroz ove dijelove. Ako se pronađe podudaranje, uklanja se iz JavaScript niza objekata i zatim se vraća na kraj.

Hajde da ovo malo optimizujemo:

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") upozorenje (obj.className) // izbornik

U gornjem primjeru, varijabla c je postavljena na početak petlje, a i je postavljen na njen posljednji indeks.

Sama petlja ide u suprotnom smjeru, završavajući uvjetom i>=0. Ovo se radi zato što se i>=0 provjerava brže od i. Što ubrzava traženje svojstava u c .

metoda rezanja

Možete izdvojiti dio niza pomoću metode slice(begin[, end]): var arr = ["Zašto", "učiti", "JavaScript"]; var arr2 = arr.slice(0,2) // uzima 2 elementa, počevši od 0 alert(arr2.join(", ")) // "Zašto, nauči"

Imajte na umu da ova metoda ne mijenja broj elemenata u nizu u JavaScriptu, već kopira dio.

Možete izostaviti drugi argument da biste dobili sve elemente koji počinju od određenog indeksa:

var arr = ["Zašto", "učiti", "JavaScript"]; var arr2 = arr.slice(1) // preuzima sve elemente počevši od 1 alert(arr2.join(", ")) // "učiti, JavaScript"

Metoda podržava negativne indekse, baš kao String#slice .

obrnuti metod

Druga korisna metoda je obrnuto. Recimo da želim dobiti posljednji dio domene kao što je " com” od “ my.site.com" Evo kako to učiniti:

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

Imajte na umu da JavaScript nizovi podržavaju složenu sintaksu (reverse()) za pozivanje metode i zatim preuzimanje elementa iz rezultirajućeg niza.

Možete kreirati duže pozive kao reverse() 0] arr.sort() alert(arr) // 1, 15, 2

Pokrenite gornji kod. Dobićete narudžbu 1, 15, 2. To je zato što metoda sve pretvara u string i koristi leksikografski redoslijed po defaultu.