Kako odrediti duljinu 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 na njihovim elementima, a također ćemo pogledati osnovne metode i svojstva dostupna pri radu s njima.

Što je polje u JavaScriptu?

Niz je naređeno prikupljanje vrijednosti. Vrijednosti u ovoj zbirci nazivaju se elementi. Svaki element u nizu ima svoj redni broj (broj), koji se naziva indeks. Indeksi su numerirani 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 (deklariranje) niza

Stvaranje nizova u JavaScriptu obično se vrši pomoću literal niza.

Literal polja je uglata zagrada koja sadrži popis elemenata odvojenih zarezom.

Na primjer:

Var prazna = ; // prazan niz var brojeva = ; // numerički niz var arr = ; // niz koji sadrži različite vrste podataka

Vrijednosti u JavaScript nizu ne moraju biti iste vrste. Oni. Jedan niz može sadržavati vrijednosti različitih tipova podataka.

Određenom elementu niza pristupa se njegovim indeksom. Ova se operacija također naziva i operacija indeksiranja.

Na primjer:

// kreirajte polje koje se sastoji od 3 elementa var smartphoneColors = ["Black", "White", "Grey"]; // prikaži u konzoli preglednika vrijednosti elemenata niza smartphoneColors s indeksima 0 i 2 console.log("Vrijednost elementa niza smartphoneColors s indeksom 0: " + smartphoneColors); // "Vrijednost elementa niza smartphoneColors s indeksom 0: Black" console.log("Vrijednost elementa niza smartphoneColors s indeksom 2: " + smartphoneColors); // "Vrijednost elementa niza smartphoneColors s indeksom 0: Gray" // promijenite vrijednost elementa niza smartphoneColors s indeksom 1 u "Red" smartphoneColors = "Red"; // ["Black", "Red", "Grey"] // postavite element polja smartphoneColors s indeksom 3 na vrijednost "Blue" smartphoneColors = "Blue"; // ["Crno", "Crveno", "Sivo", "Plavo"]

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

Var duljinaA = 7, širinaA = 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 stvaranje niza sastoji se od pozivanja funkcije konstruktora polja.

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

Var prazna = novi niz(); // prazan niz

Ova metoda stvaranja niza je ekvivalentna literalu.

Ako navedete broj kao argument funkciji konstruktora, ona će stvoriti niz koji će se sastojati od navedenog broja elemenata. Štoviše, svi ovi elementi će imati nedefiniranu vrijednost.

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

Ako funkciji konstruktora u zagradama proslijedite nekoliko vrijednosti ili jednu nenumeričku vrijednost, ona će stvoriti 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 posebna značajka JavaScript nizova je da različiti elementi istog niza mogu sadržavati različite vrste podataka.

svojstvo duljine (duljina niza)

Određivanje duljine niza (broja elemenata) vrši se pomoću svojstva length.

//stvori niz ispisivanjem vrijednosti elemenata u funkciji Array var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dodijelite varijablu lengthArray duljini niza volumeHDDs var lengthArray = volumeHDDs.length;

Kako dobiti prvi element niza

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

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

Kako dobiti zadnji element niza

Vrijednost zadnjeg elementa niza dobiva se navođenjem izraza array_name.length-1 u uglatim zagradama ovog niza:

//stvaranje niza koji se sastoji od 3 elementa var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //dohvaćanje vrijednosti zadnjeg elementa niza var lastValue = volumeHDDs;

Ponavljanje niza

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

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

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

Koja je svrha operatora brisanja?

Operator brisanja ne koristi se za uklanjanje elementa iz niza, već za dodjeljivanje nedefinirane vrijednosti zadanom elementu niza.

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

Funkcije za rad s nizovima (metode objekta niza)

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

  • pomaknuti
  • nepomaknuti
  • kriška
  • spajanje
  • podjela
  • obrnuti

Push metoda (dodavanje elementa na kraj niza)

Push metoda dizajnirana je za dodavanje elementa na kraj niza. Vrijednost ovog elementa navedena je kao parametar ove metode. 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"]

pop metoda (uklanjanje posljednjeg elementa iz niza)

Pop metoda dizajnirana je za uklanjanje posljednjeg elementa iz niza. Ova metoda nema parametara. Kao rezultat, vraća vrijednost zadnjeg (uklonjenog) elementa niza.

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

Metoda Shift (uklanjanje prvog elementa iz niza)

Metoda pomaka dizajnirana je za uklanjanje prvog elementa iz niza, tj. element koji ima indeks 0. Svi ostali elementi niza pomaknuti su 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(); // "Venus" console.log(namePlanets); // ["Merkur", "Zemlja", "Mars"]

metoda unshift (dodavanje elementa na početak niza)

Metoda unshift dizajnirana je za dodavanje elementa na početak niza (prije ostalih elemenata). Vrijednost ovog elementa navedena je kao parametar ove metode. 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 odsječka (kopiranje dijela niza)

Metoda odsječka dizajnirana je za kopiranje dijela niza. Međutim, ne mijenja izvorni niz, već kao rezultat vraća novi niz koji se sastoji od odabranih elemenata.

Metoda rezanja ima 2 parametra:

  • 1 parametar (obavezno) - namijenjen je označavanju indeksa elementa od kojeg treba započeti kopiranje elemenata;
  • Parametar 2 (neobavezno) - namijenjen je označavanju indeksa elementa na koji je potrebno kopirati (u ovom slučaju nije uključen u novi niz). Ako to ne navedete, kopirat će se 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 dizajnirana je za promjenu sadržaja niza. Može se koristiti i za dodavanje elemenata u niz i za njihovo uklanjanje.

Sintaksa metode spajanja je:

Array.splice(startIndex, deleteCount [, element1[, element2[, ...]]]); /* startIndex (obavezno) - početni indeks elementa od kojeg treba početi mijenjati niz. Ako navedete broj veći od duljine 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 brojati od kraja. deleteCount (obavezno) - broj koji pokazuje koliko elemenata treba izbrisati iz niza. Ako elemente ne treba brisati iz niza, tada se deleteCount mora postaviti 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 startIndexa, tada će u ovom slučaju oni i dalje biti izbrisani (tj. svi elementi do kraja niza, počevši od početnog indeksa) element1, element2, ... (neobavezno) - elementi koje je potrebno dodati nizu. */

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); //["Zemlja", "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 spajanja (pretvaranje niza u niz)

Metoda spajanja dizajnirana je za spajanje svih elemenata niza u niz.

Sintaksa metode spajanja:

Array.join(); /* separator (neobavezno) - 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 odvojeni ničim */

Var bobice = ["Grožđe", "Grožđe", "Rizzl", "Šipak"]; var berriesStr1 = bobice.join(); // "Grožđe, Grožđe, Ribizl, Šipak" var berriesStr2 = berries.join(""); // "GrožđeGrožđeRizizRosehip" var berriesStr3 = berries.join(", "); // "Grožđe, grožđe, ribizl, šipak" var berriesStr4 = berries.join(" + "); // "Grožđe + Grožđe + Ribizl + Šipak"

Ako koristite nestring kao separator, on će se pretvoriti u niz.

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

Pretvaranje niza u niz - split

Metoda split dizajnirana je za pretvaranje niza u niz. Ova metoda ima jedan parametar, kao koji možete navesti niz, na temelju kojeg će se ovaj niz podijeliti u niz nizova.

Var strElementComputers = "Jedinica sustava, monitor, tipkovnica, miš, zvučnici, pisač"; 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

Obrnuta metoda dizajnirana je za promjenu redoslijeda elemenata niza obrnutim redoslijedom.

Var namePlanets = new Array("Venera","Merkur","Zemlja","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]); }

Razvrstavanje elemenata niza - sortiranje

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

Var namePlanets = new Array("Venera","Merkur","Zemlja","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 JavaScriptu, koristite svojstvo duljine niza.

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

Nizovima u javascriptu mogu nedostajati indeksi. Na primjer

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

Svojstvo length vraća maksimalni indeks niza + 1. tj. u navedenom primjeru, duljina = 5.

Izračunavanje broja elemenata u nizu u javascriptu

Array.prototype.count = function())( var result = 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 duljine. To vam omogućuje smanjenje duljine postojećeg niza.

Var arr = ["prvi", "drugi", "treći"]; arr.length = 2; konzola.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 nudi API za izračun veličine, pa ćete je morati sami izračunati. To se radi na sljedeći način: prolazimo kroz sva svojstva objekta; ako je svojstvo primitivnog tipa, ukupnom rezultatu dodajemo veličinu instance ovog tipa; ako svojstvo sadrži objekt, rekurzivno izračunavamo njegova veličina.

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 nije precizna i ima mnogo problema - na primjer, postoji mogućnost ulaska u beskonačnu petlju.

Zadnja izmjena: 26.03.2018

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

Inicijalizacija niza

Prazan niz možete stvoriti uglatim zagradama ili konstruktorom polja:

Var korisnici = novi niz(); var ljudi = ; console.log(korisnici); // Array console.log(people); // Niz

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

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

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

Var korisnici = novi niz(); korisnici = "Tom"; korisnici = "Kate"; console.log(korisnici); // "Tom" console.log(users); // nedefiniran

Nije važno što je prema zadanim postavkama niz kreiran s nultom duljinom. Koristeći indekse, možemo zamijeniti jedan ili drugi element u nizu na određeni indeks.

duljina

Da biste saznali duljinu niza, upotrijebite svojstvo length:

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

Zapravo, duljina niza bit će indeks posljednjeg elementa plus jedan. Na primjer:

Var korisnici = novi niz(); // postoji 0 elemenata u nizu korisnici = "Tom"; korisnici = "Kate"; korisnici = "Sam"; za (var i=0; i

Ispis preglednika:

Tom Kate nedefinirano nedefinirano Sam

Unatoč tome što nismo dodali elemente za indekse 2 i 3, duljina niza će u ovom slučaju biti broj 5. Samo što će elementi s indeksima 2 i 3 imati vrijednost nedefinirano.

Kopiranje niza. kriška()

Kopiranje niza može biti plitko ili plitko (shallow copy) i duboko (deep copy).

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

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

U ovom slučaju, varijabla people, nakon kopiranja, pokazivat će na isti niz kao varijabla users. Stoga, kada se mijenjaju elementi u ljudima, mijenjat će se i elementi u korisnicima, budući da se zapravo radi o istom nizu.

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

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

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

Metoda slice() također vam omogućuje kopiranje dijela niza:

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

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

gurnuti()

Metoda push() dodaje element na kraj niza:

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

pop()

Metoda pop() uklanja posljednji element iz niza:

Var voće = ["jabuke", "kruške", "šljive"]; var lastFruit = fruit.pop(); // izdvajanje zadnjeg elementa iz polja document.write(lastFruit + "
"); document.write("U polju fruit " + fruit.length + " element:
"); for(var i=0; i ");

Ispis preglednika:

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

pomak()

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 polju fruit " + fruit.length + " element:
"); for(var i=0; i ");

Ispis preglednika:

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

poništi pomak()

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

Var voće = ["jabuke", "kruške", "šljive"]; voće.unshift("marelice"); dokument.pisati(voće);

Ispis preglednika:

Marelice, jabuke, kruške, šljive

Uklanjanje elementa prema 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 = korisnici.splice(3); console.log(izbrisano); // [ "Alice", "Kate" ] console.log(users); // [ "Tom", "Sam", "Bill" ]

Metoda slice vraća uklonjene elemente.

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

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

Dodatna verzija metode omogućuje vam da odredite završni indeks za brisanje. Na primjer, izbrišite prvi do treći indeks:

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

Druga verzija metode spajanja omogućuje umetanje novih elemenata umjesto izbrisanih elemenata:

Var korisnici = ["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" ]

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

concat()

Metoda concat() koristi se za kombiniranje nizova:

Var voće = ["jabuke", "kruške", "šljive"]; var povrće = ["rajčice", "krastavci", "krumpir"]; var proizvodi = voće.concat(povrće); za (var i=0; i< products.length; i++) document.write(products[i] + "
");

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

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

pridružiti()

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

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

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

vrsta()

Metoda sort() sortira niz uzlaznim redoslijedom:

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

Ispis preglednika:

Marelice kruške breskve šljive jabuke

obrnuti ()

Metoda reverse() okreće niz unatrag:

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

Ispis preglednika:

Breskve marelice šljive kruške jabuke

U kombinaciji s metodom sort(), možete sortirati niz silaznim redoslijedom:

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

Ispis preglednika:

Jabuke šljive breskve kruške marelice

Pronalaženje indeksa elementa

Metode indexOf() i lastIndexOf() vraćaju indeks prvog i zadnjeg uključivanja elementa u polje. 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 retka "jabuke" u nizu 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 odgovaraju li svi elementi određenom uvjetu:

Var brojevi = [ 1, -12, 8, -4, 25, 42 ]; uvjet funkcije(vrijednost, indeks, niz) ( prom. rezultat = laž; ako (vrijednost > 0) ( rezultat = istina; ) vrati rezultat; ); var pass = brojevi.svaki(uvjet); document.write(prošlo); // lažno

Metodi every() prosljeđuje se 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 prenesene vrijednosti elementa s nekim uvjetom. Na primjer, u ovom primjeru provjeravamo svaki element niza da vidimo je li veći od nule. Ako je veći, vraćamo vrijednost true, odnosno element ispunjava uvjet. Ako je manje, vrati false - element ne ispunjava uvjet.

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

neki()

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

Var brojevi = [ 1, -12, 8, -4, 25, 42 ]; uvjet funkcije(vrijednost, indeks, niz) ( var rezultat = laž; if (vrijednost === 8) ( rezultat = istina; ) vrati rezultat; ); var pass = brojevi.neki(uvjet); // istina

filtar()

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 ]; uvjet funkcije(vrijednost, indeks, niz) ( prom. rezultat = laž; ako (vrijednost > 0) ( rezultat = istina; ) vrati rezultat; ); var filteredNumbers = brojevi.filter(uvjet); za (var i=0; i< filteredNumbers.length; i++) document.write(filteredNumbers[i] + "
");

Ispis preglednika:

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 kôd:

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; dokument.write("Kvadrat broja " + vrijednost + " je " + rezultat + "
"); ); brojevi.zaSvaki(kvadrat);

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

Metoda map() slična je metodi forEach; 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, upotrijebimo metodu karte za izračun 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 se prosljeđuje 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 ćemo članku pogledati standardne JavaScript nizove s numeričkim indeksima. Nizovi se deklariraju pomoću uglatih zagrada:

var voće = ["Jabuka", "Naranča", "Magarac"]

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

var voće = ["Jabuka", "Naranča", "Magarac"] upozorenje(voće) upozorenje(voće) upozorenje(voće)

Također možemo dobiti duljinu JavaScript niza:

var fruits = ["Jabuka", "Naranča", "Magarac"] upozorenje(fruits.length)

Ups! Napravili smo niz s dvije voćke i magarcem. Sada moramo ukloniti magarca.

pop i push metode

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

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

var fruits = ["Jabuka", "Naranča", "Magarac"] alert("Uklanjam "+fruits.pop()) // Sada imamo samo ["Jabuka","Naranča"] alert("Sada veličina niza : "+voće.duljina) // magarac uklonjen

Imajte na umu da pop mijenja sam niz.

Pop-ov pandan je push metoda, koja dodaje element nizu. Na primjer, zaboravili smo dodati breskvu:

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

  1. Napravite niz stilova s ​​elementima " Jazz”, “Blues”;
  2. Dodajte vrijednost " rock'n'roll«;
  3. Zamijenite drugu vrijednost od kraja s vrijednošću " klasična". Trebali biste završiti s nizom: " Jazz”, ”klasična”, ”rock'n'roll" Kod bi trebao raditi za bilo koju duljinu niza;
  4. Dohvatite posljednju vrijednost iz niza i prikažite je putem upozorenja.

Riješenje

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

Shift/unshift metode

Metode shift/unshift rade na kraju niza, ali također možete koristiti shift za pomicanje elemenata prema gore ( prva vrijednost niza uklanja se pomakom elemenata). Metoda unshift omogućuje JavaScriptu dodavanje elementa nizu s kraja:

var fruits = ["Apple", "Orange"] var apple = fruits.shift() // sada imamo samo ["Orange"] fruits.unshift("Lemon") // sada imamo ["Lemon", " Orange"] 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", "Naranča", "Breskva"]

Samostalni zadatak

Napišite kod za prikaz slučajne vrijednosti iz arr niza putem upozorenja:

var arr = ["Šljiva","Naranča","Magarac","Mrkva","JavaScript"]

Napomena: kod za dobivanje slučajnog broja od najmanje do najveće vrijednosti (uključujući) je sljedeći:

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

Riješenje

Moramo izdvojiti nasumični broj od 0 do arr.length-1 (uključujući):

var arr = ["Šljiva","Naranča","Magarac","Mrkva","JavaScript"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

Ponavljanje niza

U JavaScriptu, iteracija kroz niz se vrši pomoću for petlje:

var voće = ["Ananas", "Limun", "Jabuka", "Naranča", "Breskva"] for(var i=0; i

Samostalni zadatak

Napravite funkciju find(arr,value) koja pronalazi vrijednost u zadanom polju i vraća njezin 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

Riješenje

Moguće rješenje može izgledati ovako:

funkcija find(array, value) ( ​​​​for(var i=0; i

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

Ispravnije je koristiti === kada radite s nizovima u JavaScriptu. Osim toga, najnoviji ES5 standard uključuje funkciju Array#indexOf. Pomoću njega možemo definirati funkciju poput ove:

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

Još pametnije bi bilo definirati find s uvjetom da se provjeri postoji li metoda indexOf.

Samostalni zadatak

Napravite 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 =

Riješenje

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

pridružite se i razdvojite

Ponekad vam je potreban brz način pretvaranja JavaScript niza u niz. Tome služi metoda pridruživanja.

Spaja niz u niz pomoću danog graničnika:

var voće = ["Limun","Jabuka","Naranča","Breskva"]; var str = fruits.join(", "); upozorenje(str);

Obrnuta pretvorba lako se izvodi metodom dijeljenja:

var fruits = "Jabuka, Naranča, Breskva"; var arr = fruits.split(","); // arr sada sadrži ["Jabuka", "Naranča", "Breskva"] upozorenje(arr);

Samostalni zadatak

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="otvori meni novi" addClass(obj, "open") // nema promjena (klasa već postoji) addClass(obj, "me") // obj.className= "otvori meni novi ja" upozorenje(obj.className) //

Riješ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: "otvori izbornik" ) addClass(obj, "novo") addClass(obj, "otvori") upozorenje(obj.className) // otvori izbornik novi

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

Sama petlja se obrađuje u suprotnom smjeru, završavajući uvjetom i>=0. Budući da je i>=0 brža za provjeru nego i. Što u JavaScriptu ubrzava pretraživanje u nizu.

Korištenje duljine za rezanje niza

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

Vi odredite duljinu i preglednik skraćuje niz.

Niz je objekt, pa što to znači?

Zapravo, u JavaScriptu, polje je objekt, zajedno s automatskim postavljanjem duljine i posebnim metodama.

Ovo se razlikuje od koncepta u drugim jezicima, gdje nizovi predstavljaju kontinuirani segment memorije. Ovo se također razlikuje od reda čekanja ili hrpe temeljenog na povezanim popisima.

Nenumerički niz ključeva

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

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

U JavaScriptu, nizovi su hash tablice koje imaju prednosti u pogledu performansi, ali i određene nedostatke.

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

push radi samo s krajem:

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

Metode shift/unshift su spore jer trebaju ponovno numerirati cijeli niz. Metoda spajanja također može uzrokovati promjenu numeriranja:


Dakle, shift/unshift su sporiji od push/pop. Što je niz veći, JavaScriptu je duže potrebno da sortira niz.

Samostalni zadatak

Što će biti rezultat? Zašto?

arr = ["a", "b"] arr.push(funkcija() ( upozorenje(ovo))) arr() //?

Riješenje

Budući da su nizovi objekti, arr .. zapravo je poziv metode na objektu kao što je obj metoda:

arr() // isto kao arr() // sintaktički neispravno, ali konceptualno isto: arr.2() // prepisano u istom stilu kao obj.method() this = arr u ovom slučaju prosljeđuje se funkciji, pa se ispisuje sadržaj arr. arr = ["a", "b"] arr.push(funkcija() ( upozorenje(ovo))) arr() // "a","b",funkcija

Rijetki nizovi, opis duljine

Svojstvo duljine omogućuje vam da dobijete ne veličinu niza u JavaScriptu, već zadnji indeks + 1. Ovo je važno kada govorimo o rijetkim nizovima, s "prazninama" u indeksima.

U sljedećem primjeru dodat ćemo dva elementa praznim plodovima, ali će vrijednost duljine ostati 100:

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

Ako pokušate ispisati rijedak niz, preglednik će vratiti vrijednosti indeksa koji nedostaju kao prazne elemente:

var voće = // prazno polje voće = "Breskva" voće = "Jabuka" upozorenje(voće) // ,Breskva,Jabuka (ili nešto slično)

Ali niz je objekt s dva ključa. Vrijednosti koje nedostaju ne zauzimaju prostor.

Rijetki nizovi ponašaju se čudno kada se na njih primjenjuju metode nizova. Oni nemaju pojma da indeksi nedostaju:

var fruits = fruits = "breskva" fruits = "jabuka" alert(fruits.pop()) // pop "Apple" (na indeks 9) alert(fruits.pop()) // pop neodređeni element (na indeks 8) )

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

Uklanjanje iz niza

Kao što znamo, nizovi su objekti, pa bismo mogli koristiti delete za uklanjanje vrijednosti:

var arr = ["Idi", "do", "kući"] brisanje arr // sada arr = ["Idi", nedefinirano, "kući"] upozorenje(arr) // nije definirano

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

Operator za brisanje uklanja par ključ-vrijednost i to je to. Naravno, budući da je niz samo hash, položaj uklonjenog elementa postaje nedefiniran.

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

metoda spajanja

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

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

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

Pogledajmo nekoliko primjera:

var arr = ["Idi", "to", "home"] arr.splice(1, 1) // ukloni 1 element počevši od indeksa 1 alert(arr.join(",")) // ["Idi " , "home"] (1 element uklonjen)

Dakle, možete koristiti spoj za uklanjanje jednog elementa iz niza. Brojevi elemenata niza pomaknuti su da popune prostor:

var arr = ["Go", "to", "home"] arr.splice(0, 1) // ukloni 1 element, počevši od indeksa 0 alert(arr) // "to" 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"]; // uklonite prva 2 elementa var removed = arr.splice(0, 2) alert(removed) // "Idi", "to"<-- массив удаленных элементов 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 broji od kraja niza:

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

Samostalni zadatak

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

var obj = (className: "otvori izbornik")

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

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

Riješenje

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

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

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

Sama petlja teče u suprotnom smjeru, završavajući uvjetom i>=0. Ovo je učinjeno jer se i>=0 provjerava brže od i. Što ubrzava traženje nekretnina u c .

metoda kriške

Dio niza možete izdvojiti pomoću metode slice(begin[, end]): var arr = ["Zašto", "learn", "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 njegov 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) // uzima sve elemente počevši od 1 alert(arr2.join(", ")) // "učenje, JavaScript"

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

obrnuta metoda

Druga korisna metoda je obrnuto. Recimo da želim dobiti posljednji dio domene poput " com” od “ moja.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 dohvaćanje elementa iz rezultirajućeg niza.

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

Pokrenite gornji kod. Dobit ćete narudžbu 1, 15, 2. To je zato što metoda pretvara sve u niz i prema zadanim postavkama koristi leksikografski poredak.