Nizovi u JavaScriptu. Višedimenzionalni nizovi u javascriptu i nekoliko načina za njihovo sortiranje Višedimenzionalni nizovi u javascript primjerima

U prethodnom članku razgovarali smo o tome što je to i kako s njim raditi. U ovom članku ćemo govoriti o višedimenzionalni niz.

To je niz koji ima jedan ili više elemenata, koji su također nizovi. Konkretno, ovisno o dubini oglasa, može se nazvati dvodimenzionalni niz(2 razine). trodimenzionalni niz(3 razine). četverodimenzionalni(4 razine) i tako dalje.

Najpopularniji, nakon jednodimenzionalnog niza, najčešće korišten je dvodimenzionalni niz. Proučit ćemo ga detaljnije.


Kao što vidite, elementi dvodimenzionalnog niza su jednodimenzionalni nizovi. Ako bi ti jednodimenzionalni nizovi sadržavali više nizova, tada bi niz polja već bio trodimenzionalni.

Kao primjer, napravimo tri jednostavna niza i ispunimo ih podacima. Prvi ćemo ispuniti parnim brojevima, drugi neparnim, a treći nekim proizvoljnim podacima.

// Deklarirajte tri prazna niza var evenNumbers = new Array (); // Varijabla k - za indekse niza evenNumbers var k = 0; var oddNumbers = novi niz (); // Varijabla n - za indekse niza oddNumbers var n = 0; var podaci = novi niz ("auto", "avion", istina, 89, "m"); // Ispuni niz evenNumbers, parnim brojevima za (var i = 1; i

Da biste vidjeli što se nalazi unutar niza, možete koristiti takav alat kao konzola.

Na primjer, želimo vidjeti sadržaj niza s neparnim brojevima oddNumbers. Da biste to učinili, napišite sljedeći redak u kodu ispod:

Console.log (neparni brojevi);

Da biste vidjeli rezultat, morate otvoriti konzole u pregledniku... U Google Chromeu to se radi ovako: desnom tipkom miša kliknite stranicu i iz kontekstnog izbornika odaberite posljednju opciju "Prikaz koda", odnosno inspektor. U engleskoj verziji ova se opcija zove Inspect.


A ispod će se pojaviti alatna traka programera. U njemu morate otići na karticu Konzola.


Sada da bi stvoriti dvodimenzionalni niz, morate ga deklarirati i dodati jednodimenzionalne nizove koje ste kreirali iznad.

// Deklarirajte dvodimenzionalni niz twoDimens i popunite ga var twoDimens = new Array (evenNumbers, oddNumbers, data); console.log (twoDimens);

Pogledajmo sadržaj ovog niza u konzoli.


ponavljajući dvodimenzionalni niz

Prvo, naučimo kako pristupiti elementima dvodimenzionalnog niza.

Kao i kod pojedinačnih nizova, elementima se pristupa pomoću njihovih indeksa.

Kao primjer, prikažimo element na indeksu 3 iz niza s neparnim brojevima (oddNumbers). Indeks jednodimenzionalnog niza oddNumbers u dvodimenzionalnom nizu twoDimens je jedan (1).

Document.write ("Element s indeksom 3 iz niza neparnih brojeva oddNumbers je:" + twoDimens); // Element: 7

U polju twoDimens upućujemo na element s indeksom 1. Element na tom indeksu je niz oddNumbers. I u ovom nizu već pristupamo elementu s indeksom 3, a to je broj 7.

A sada prijeđimo na samo pitanje kako petljati preko dvodimenzionalnog niza.

Petlja preko dvodimenzionalnog niza radi se pomoću dvostruke petlje. Na primjer, idemo iterirati po našem polju twoDimens.

Za (var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

Element s indeksom "+ i +" "+ j +" jednako je: "+ twoDimens [i] [j] +"

"); } }

U prvoj petlji ponavljamo sam niz twoDimens. U drugoj petlji već ponavljamo sam element (niz). Prvo, varijabla i je jednaka 0. Stoga, u drugoj petlji, prvo iteriramo preko prvog niza evenNumbers, koji ima indeks 0. I već unutar druge petlje pristupamo elementima ovog niza. Dakle: twoDimens [j]. Gdje je j u rasponu od 0 do duljine niza evenNumbers.

Nakon iteracije preko elemenata iz prvog niza, vraćamo se na prvu petlju, povećavamo varijablu i i nastavljamo s ponavljanjem preko drugog niza oddNumbers, koji ima indeks 1. I tako ponavljamo svaki element dvodimenzionalnog niza twoDimens.

Pogledajmo sada rezultat ove pretrage:


To je sve o čemu sam želio govoriti u ovom članku. Sada znate kako stvoriti dvodimenzionalni niz, kako pristupiti elementima dvodimenzionalnog niza i kako iterirati dvodimenzionalni niz. Nadam se da je sve bilo jasno. Želim vam veliki uspjeh!

U ovom članku ćemo pogledati standardne JavaScript numerički indeksirane nizove. 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", "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 dva voća 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 Donkey dohvaća iz niza:

var fruits = ["Apple", "Orange", "Magarac"] upozorenje ("Brišem" + fruits.pop ()) // Sada imamo samo ["Apple", "Orange"] upozorenje ("Sada veličina niza : "+ plodovi.dužina) // magarac uklonjen

Imajte na umu da pop mijenja sam niz.

Analog pop je push metoda, koja dodaje stavku u niz. Na primjer, zaboravili smo dodati breskvu:

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

  1. Napravite niz stilova s ​​elementima " Jazz”, “Blues”;
  2. Dodajte vrijednost " Rock'n'Roll«;
  3. Zamijenite drugu vrijednost s kraja s " Klasični". Trebali biste završiti s nizom: " Jazz”, ”Klasični”, ”Rock'n'Roll”. Kod bi trebao raditi za bilo koju duljinu niza;
  4. Izvucite posljednju vrijednost iz niza i upozorite je.

Riješenje

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

Metode pomicanja / poništavanja smjene

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

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

I shift i unshift mogu raditi na više elemenata u isto vrijeme:

var fruits = ["Apple"] fruits.push ("Naranča", "Breskva") fruits.unshift ("Ananas", "Limun") // sada niz izgleda ovako: ["Ananas", "Limun", "Jabuka "," Naranča "," Breskva "]

Zadatak za samostalno učenje

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

var arr = ["Šljiva", "Naranča", "Magarac", "Mrkva", "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))

Riješenje

Moramo izdvojiti slučajni broj između 0 i arr.length-1 (uključivo):

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

Iteracija preko niza

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

var fruits = ["Ananas", "Limun", "Jabuka", "Naranča", "Breskva"] za (var i = 0; i

Zadatak za samostalno učenje

Stvorite funkciju pronalaženja (arr, vrijednost) koja pronalazi vrijednost u danom nizu i vraća njezin indeks, ili -1 ako nije pronađena vrijednost.

Na primjer:

arr = ["test", 2, 1.5, false] pronaći (arr, "test") // 0 pronaći (arr, 2) // 1 pronaći (arr, 1,5) // 2 pronaći (arr, 0) // -1

Riješenje

Moguće rješenje moglo bi izgledati ovako:

funkcija find (niz, vrijednost) (za (var i = 0; i

Ali to nije točno, jer == ne pokazuje razliku između 0 i false.

Ispravnije je koristiti === kada radite s nizovima u JavaScriptu. Osim toga, najnoviji ES5 standard sadrži funkciju Array # indexOf. Uz njegovu pomoć možemo definirati funkciju na sljedeći način:

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

Bilo bi još pametnije definirati find kroz uvjet kako bi se provjerilo postoji li metoda indexOf.

Zadatak za samostalno učenje

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 = filterNumerički (arr); // sada arr =

Riješenje

Rješenje je preći preko niza i dodati vrijednosti novom nizu ako su numeričke.

spojiti i podijeliti

Ponekad vam je potreban brz način za pretvaranje JavaScript niza u niz. Tome služi metoda spajanja.

Povezuje niz u niz pomoću navedenog graničnika:

var fruits = ["Limun", "Jabuka", "Naranča", "Breskva"]; var str = fruits.join (","); uzbuna (str);

Obrnutu pretvorbu lako se izvodi metodom split:

var fruits = "Jabuka, naranča, breskva"; var arr = voće.split (","); // arr sada sadrži ["Apple", "Orange", "Peach"] upozorenje (arr);

Zadatak za samostalno učenje

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 = upozorenje "otvori izbornik novi ja" (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) (za (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (ako (c [i] == cls ) return) elem.className + = "" + cls) var obj = (className: "open menu") addClass (obj, "new") addClass (obj, "open") alert (obj.className) // otvori izbornik novi

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

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

Korištenje duljine za obrezivanje niza

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

Vi dajete duljinu, a preglednik skraćuje niz.

Niz je objekt, što znači

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

To se razlikuje od koncepta u drugim jezicima, gdje nizovi predstavljaju susjedni segment memorije. Također se razlikuje od povezanog popisa koji se temelji na redu čekanja ili stogu.

Nenumeričke tipke polja

Ključevi su brojevi, ali mogu imati bilo koji naziv:

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

U JavaScriptu, nizovi su hash tablice sa svojim prednostima u izvedbi, ali i nedostacima.

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

push radi samo na kraju:

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

Metode Shift/unshift su spore jer trebaju prenumerirati cijeli niz. Metoda spajanja također može uzrokovati prenumeraciju:

Dakle, pomicanje / poništavanje prijenosa je sporije od push / pop. Što je niz veći, JavaScriptu je duže potrebno da sortira niz.

Zadatak za samostalno učenje

Što će biti rezultat? Zašto?

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

Riješenje

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

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

Rijetki nizovi, opis duljine

Svojstvo dužine omogućuje vam da dobijete ne veličinu niza u JavaScriptu, već zadnji indeks + 1. Ovo je važno kada su u pitanju rijetki nizovi, s "prazninama" u indeksima.

U sljedećem primjeru ćemo dodati dva elementa praznim plodovima, ali duljina ostaje na 100:

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

Ako pokušate ispisati rijetki niz, preglednik će prikazati indekse koji nedostaju kao prazne elemente:

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

No, 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 niza. Nemaju pojma da indeksi nedostaju:

var fruits = fruits = "Peach" fruits = "Apple" alert (fruits.pop ()) // pritisnite "Apple" (na indeksu 9) upozorenje (fruits.pop ()) // potisnite poništeno (na indeksu 8) ))

Pokušajte izbjeći rijetke nizove. U svakom slučaju, njihove metode neće dobro funkcionirati. Umjesto toga upotrijebite objekt.

Uklanjanje iz niza

Kao što znamo, nizovi su objekti, tako da možemo koristiti delete za brisanje vrijednosti:

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

Možete vidjeti da se vrijednost uklanja, ali ne na način na koji bismo željeli, jer niz sadrži nepostavljeno.

Operator delete briše par ključ/vrijednost i to je to. Naravno, budući da je niz samo hash, pozicija uklonjenog elementa postaje nedefinirana.

Češće nego ne, 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 i zamijeniti elemente u višedimenzionalnim nizovima JavaScripta. Njegova sintaksa je:

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

Briše 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) // ukloniti 1 element počevši od upozorenja indeksa 1 (arr.join (",")) // ["Idi " ," home "] (1 stavka je uklonjena)

Na ovaj način možete koristiti spajanje za uklanjanje jednog elementa iz niza. Brojevi elemenata niza pomaknuti su kako bi popunili prazninu:

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

Sljedeći primjer pokazuje kako zamijeniti stavke:

Metoda spajanja vraća niz uklonjenih stavki:

var arr = ["Idi", "do", "kući", "sada"]; // ukloni prve 2 stavke var uklonjen = arr.splice (0, 2) upozorenje (uklonjeno) // "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 broji od kraja niza:

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

Zadatak za samostalno učenje

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 data:

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

Riješenje

Morate podijeliti className na dijelove i preći preko tih dijelova. Ako se pronađe podudaranje, uklanja se iz JavaScript niza objekata i zatim se dodaje na kraj.

Hajdemo malo optimizirati ovo:

funkcija removeClass (elem, cls) (za (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (ako (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, c je postavljen na početak petlje, a i je postavljen na zadnji indeks.

Sama petlja ide u suprotnom smjeru, završavajući uvjetom i> = 0. To je zato što se i> = 0 testira brže od i. Što ubrzava potragu za nekretninom u c.

Metoda rezanja

Možete izdvojiti dio niza pomoću metode slice (početak [, kraj]): 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) // prihvaća sve elemente koji počinju s 1 upozorenjem (arr2.join (",")) // "učite, JavaScript"

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

Reverzna metoda

Druga korisna metoda je obrnuto. Pretpostavimo da želim dobiti posljednji dio domene, na primjer, " com"Iz" moja.site.com”. Evo kako to možete učiniti:

var domain = "my.site.com" var last = domain.split ("."). obrnuto () upozorenje (zadnje)

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

Možete upućivati ​​duže pozive poput obrnutog () 0] arr.sort () upozorenje (arr) // 1, 15, 2

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

Dobar dan svima. Alexey Gulynin je u kontaktu. U prošlom smo članku raščlanili konstrukciju switch case u javascriptu. U ovom članku želio bih vam reći što je nizovi u Javascriptu... Pojam niza igra važnu ulogu ne samo u Javascriptu, već u cijelom programiranju. Varijabla, kao što je niz, ne sadrži jedan element, već nekoliko. Sintaksa za kreiranje niza je sljedeća:

Var mas = novi niz (vrijednost1, vrijednost2, ..., vrijednostN);

U ovom slučaju kreira se mas varijabla tipa niza s vrijednostima navedenim u zagradama. Imajte na umu da se niz kreira pomoću nove ključne riječi. Možete se pozvati na elemente niza navodeći naziv niza i indeks polja u uglastim zagradama. Indeks niza temelji se na nuli. Navedimo primjer niza s 4 elementa i izlazom 2 elementa:

Ako stavimo mas, ispisat će "privet", budući da indeksiranje niza počinje od nule. Idemo sada shvatiti kako prikazati sve elemente niza. Da biste to učinili, trebate koristiti petlju. Osim poznavanja petlji u Javascriptu, morate znati svojstvo duljine nizova, koje vraća broj elemenata u nizu (ili, drugim riječima, njegovu duljinu). Ispišimo duljinu mas niza:

Izlaz svih elemenata niza:

Do sada smo gledali jednodimenzionalne nizove. Općenito, nizovi mogu biti višedimenzionalni. Glavna stvar je razumjeti da je, na primjer, dvodimenzionalni niz niz čiji su elementi nizovi. Analizirajmo s vama sljedeći problem: trebate stvoriti dvodimenzionalni niz 3 puta 3, čije elemente postavlja korisnik i prikazuje ovaj niz. Ovdje ćemo koristiti operator prompt da od korisnika zatražimo broj:

U našem slučaju, dvodimenzionalni niz odgovara (na primjer) sljedećoj strukturi: mas = [,,]. Možete vidjeti da niz ima 3 elementa, od kojih je svaki sam niz.

U početku je zadatak Javascripta bio stvaranje dinamičkih stranica. U svojoj praksi nigdje nisam koristio dvodimenzionalne nizove, samo jednodimenzionalne, tako da će vam znanje o nizovima koje ste dobili iz ovog članka biti sasvim dovoljno. U jednom od sljedećih članaka govorit ću o objektu Array, njegovim svojstvima i metodama.

U JavaScriptu, višedimenzionalni nizovi su nizovi nizova. Da biste pristupili elementu, recimo, dvodimenzionalnog niza, morate dvaput navesti operator.

Pretpostavimo da je varijabla matrica niz nizova cijelih brojeva. Svaki od elemenata matrice [j] je niz brojeva. Za označavanje zasebnog broja koristimo oznaku: matrica [j] [k].

Primjer. Koristimo dvodimenzionalni niz za izradu tablice množenja.

var matrica = novi niz (10); // u matrici ima 10 redaka

za (var j = 0; j< matrix.length; j++)

matrica [j] = novi niz (10); // d svaki redak stvorio je 10 stupaca

za (var red = 0; red< matrix.length; row++) {

za (kol = 0; kolon< matrix .length; col++) {

matrica = red * kolona; // popunjavanje elemenata niza

var rezultat = matrica; // rezultat množenja 24

Tipična upotreba 2D polja u JavaScriptu je stvaranje niza prilagođenih opcija izbornika. Recimo da neke od opcija u glavnom izborniku odgovaraju opcijama u padajućem podizborniku. Napravimo niz čija duljina odgovara broju opcija u glavnom izborniku. Elementi ovog niza bit će nizovi imena opcija koje im odgovaraju u podizborniku.

izbornik = novi niz ();

izbornik = novi niz ("Opcija 1.1", "Opcija 1.2", "," Opcija 1.3 ");

izbornik = novi niz ("Opcija 2.1", "Opcija 2. 2");

izbornik = novi niz ("Opcija 3.1", "Opcija 3.2", "Opcija 3.3", "Opcija 3.4");

Za pristup 1. opciji 2. podizbornika trebate napisati:

menu // vrijednost je "Opcija 2.1";

Promijenimo konstrukciju niza tako da sadrži i nazive opcija glavnog izbornika i opcija podizbornika:

izbornik = novi niz ()

izbornik = novi Arrau ("Izbornik1", "Izbornik2", "Izbornik3");

izbornik = novi Arrau ();

izbornik = novi niz ("Opcija 1.1". "Opcija 1.2", "Opcija 1.3");

izbornik = novi Arrau ("Opcija 2.1", "Opcija 2. 2");

izbornik = novi niz ("Opcija 3.1", "Opcija 3. 2", "Opcija H.3", "Opcija 3.4");

menu // vrijednost je "Menu2"

menu // vrijednost je "Menu3"

izbornik // vrijednost je "Opcija 2.1"

izbornik // vrijednost je "Opcija 3.2"

Metode niza

U ovom ćemo odjeljku razmotriti metode pomoću kojih možete manipulirati elementima niza.

pridružiti () - metoda koja pretvara svaki od elemenata niza u niz i spaja ih. Neobavezni niz može se navesti kao argument metode za odvajanje pojedinačnih stavki u rezultirajućem nizu. Ako ne navedete razdjelnik, zadani je razdjelnik zarez.

var arr =; // zadan niz od tri elementa

var str = arr.join (); // vrijednost str je "12,23,38"

str = arr.join (";"); // str == "12; 23; 38"

Kao što je ranije spomenuto, metoda Array.join () suprotna je metodi String.split (), koja dijeli nizove u elemente niza.

obrnuto () - metoda koja mijenja redoslijed elemenata u nizu. Ova metoda ne stvara novi niz, već mijenja njihov redoslijed u izvornom nizu.

var arr = novi Arrau (1,2,3); // arr = 1, arr = 2, arr = 3

arr.obrnuti (); // arr = 3, arr = 2, arr = 1

var str = arr.join (); // str == "3,2,1"

sortiraj () - metoda koja razvrstava elemente niza na mjesto i vraća sortirani niz. Ako se metoda sort () pozove bez ikakvih argumenata, ona će sortirati elemente niza po abecedi, pretvarajući ih privremeno u vrijednosti niza kako bi izvršila usporedbu ako je potrebno.

var arr = novi niz ("banaana", "sherrry", "aple");

var str = arr.join (","); // str == "jabuka, banana, trešnja"

Ako niz sadrži nedefinirani element, premotava se do kraja niza.

Kako bi se sortiralo ne abecednim, već nekim drugim redoslijedom, metoda sort () se prosljeđuje kao argument funkciji usporedbe, čija je zadaća naznačiti pravilo prema kojem će se jedan od svoja dva argumenta nalaziti ranije u sortirani popis. Ako drugom mora prethoditi prvi argument, funkcija usporedbe mora vratiti negativnu vrijednost. Ako u sortiranom nizu prvi argument mora slijediti drugi, tada funkcija mora vratiti pozitivan broj. Funkcija usporedbe treba vratiti 0 ako su dvije vrijednosti ekvivalentne, odnosno njihov redoslijed nije važan. Primjer.

Razvrstajmo po brojčanom redu.

var arr =;

arr.sort (); // abecednim redom: 11111, 2222, 333, 44

arr.sort (funkcija (prva, druga) (//

povratak prvi - drugi; )); // Brojčani redoslijed: 44, 333, 2222, 11111

Zgodno je koristiti funkcionalni literal u ovom isječku koda jer će se funkcija za usporedbu pozvati jednom i nema potrebe da je imenujete.

Definiranjem drugih funkcija razvrstavanja možete izvesti širok raspon metoda sortiranja.

spojiti () - metoda koja stvara i vraća novi niz koji sadrži elemente izvornog niza, napunjen vrijednostima svih argumenata navedenih u metodi concat (). U slučaju kada je sam argument niz, njegovi elementi će se dodati u rezultirajući niz. No, treba napomenuti da se rekurzija ne izvodi pri dijeljenju nizova od nizova.

var arr =;

arr.concat (4, 5) // rezultat

arr. concat (); // rezultat

arr. concat (,) // rezultat

arr. konkat (4,]) // rezultat]

kriška () - metoda koja vraća podniz (fragment) izvornog niza. Metoda ima dva argumenta koji označavaju početak i kraj vraćenog podniza. Vraćeni niz sadržavat će elemente počevši od onog čiji je indeks označen prvim argumentom, pa sve do elementa čiji je indeks označen drugim argumentom, ali ga ne uključuje.

Ako navedete jedan argument, vraćeni niz sadrži elemente od pozicije specificirane argumentom do kraja niza. Negativan argument određuje broj elementa niza s kraja niza.

var arr =;

arr.slice (0,3); // će se vratiti

arr. kriška (3); // će se vratiti

arr. kriška (1, -1); // će se vratiti

arr. kriška (-3, -2); // će se vratiti

spoj () - univerzalna metoda koja se može koristiti za dodavanje i uklanjanje elemenata niza ili za obje operacije u isto vrijeme. Kao rezultat rada metode mijenja se izvorni niz.

U metodi splice () prvi argument navodi indeks niza na kojem će početi brisanje i/ili umetanje, drugi argument određuje broj elemenata za uklanjanje. Ako izostavite drugi argument, tada će elementi niza biti uklonjeni, počevši od pozicije specificirane prvim argumentom metode, pa do kraja niza. Vraća metodu spajanja (). niz uklonjenih elemenata. Ako je drugi argument 0, metoda će vratiti prazan niz.

var arr =;

arr.splice (4); // će se vratiti; arr postaje jednak

arr.splice (1,2); // će se vratiti; arr postaje jednak

Dva argumenta metode splice () koji određuju elemente niza koje treba ukloniti mogu biti praćeni bilo koju količinu dodatni argumenti koji specificiraju elemente za umetanje u niz, počevši od indeksa navedenog u prvom argumentu metode.

var arr =;

arr.splice (2,0, "ab", "cd"); / * će se vratiti; arr postaje * /

arr.splice (2,2,, 3); / * će vratiti ["ab", "cd"]; arr postaje, 3,33,44,55] * /

Imajte na umu da metoda splice () ne dijeli argumente niza u zasebne elemente koji će se umetnuti, već umeće sam niz.

pritisnite () i pop () - metode koje omogućuju korištenje nizova kao stogova. Metoda push () dodaje nove elemente na kraj niza i vraća novu duljinu niza. Metoda pop () uklanja posljednji element u nizu i kao rezultat vraća izbrisanu vrijednost.

Obje metode mijenjaju izvorni niz. Kada koristite kombinaciju push () i pop () metoda u JavaScriptu, možete upotrijebiti niz za stvaranje stog s pravilom usluge prvi-zadnji izašao.

var stak =; // prazan stog

stog.push (1,2); // niz: vratit će 2

stog. pop (); // niz: vratit će 2

stog.push (3); // niz: vratit će 2

stak.rr (); // niz: vratit će 3

stack.push (); // niz:] će vratiti 2

stog. pop () // polje: vratit će se

stog. pop (); // niz: vratit će 1

unshift () i shift () - metode koje rade gotovo isto kao push () i pop (), ali ne umeću i uklanjaju elemente na kraju niza, već na početku.

Metoda unshift () dodaje jedan ili više elemenata na početak niza, pomičući elemente do kraja niza i vraća novu duljinu niza. Metoda shift () koristi se za uklanjanje prvog elementa niza, vraća uklonjeni element.

var arr =; // arr:

arr.isključi (1); // arr: vratit će 1

arr.isključenje (22); // arr: vratit će 2

arr.shift (); // arr: vratit će 22

arr.unshift (3,); // arr:, 1] će vratiti 3

arr.shift (); // arr: [, 1] će vratiti 3

arr.shift (); // arr: vratit će se

arr.shift (); // arr: vratit će 1

Prilikom pozivanja metode unshift () s više argumenata, ti se argumenti umeću svi odjednom, a ne jedan po jedan, kao što se radi u metodi splice (). Odnosno, u rezultirajućem nizu vrijednosti će biti raspoređene istim redoslijedom kojim su napisane na popisu argumenata kada je metoda pozvana.

toString () i toLocaleString ()- metode koje pretvaraju svaki od elemenata niza u niz i prikazuju popis primljenih nizova odvojenih zarezima. Metoda toString (), kao što je navedeno, dostupna je za bilo koji objekt u JavaScriptu, uključujući niz. Imajte na umu da metode ne ostavljaju uglaste zagrade ili bilo koje druge separatore oko vrijednosti polja.

ToString () // će vratiti "1,2,3"

["a", "b", "c"]. toString () // će vratiti "a, b, c"

] .toString () // će vratiti "1,2, s"

Metoda toString () vratit će isti niz kao i metoda join () ako se pozove bez parametara.

toLocaleString () - Metoda koja spaja rezultirajuće nizove pomoću graničnika specifičnog za regiju.

Primjer 1. Izrada cikličkog bannera (slideshow).

Napravimo niz slika koje će se pojaviti na stranici u određenim intervalima.

Promijenite slike

Primjer 2. Ispis slučajnog aforizma na stranici. Svaki put kad se stranica osvježi, pojavljuje se nasumični aforizam.

Slučajni aforizam na stranici

Objekt datuma

U JavaScriptu, objekt Date je dizajniran za rad s vrijednostima datuma i vremena. Objekt je instanciran konstruktorom Date () pomoću operatora new.

var novi_dan = novi datum ();/ * Stvorena je instanca objekta koja pohranjuje informacije o trenutnom vremenu i datumu (čita sistemsko vrijeme računala). * /

var Božić = novi Datum (2016, 11, 25);/ * Stvorena instanca objekta s datumom Božića. Brojevi mjeseci se broje od nule, tako da je prosinac numeriran 11 redom * /

Metode definirane na objektu Date () omogućuju postavljanje i pohranjivanje različitih vrijednosti vremena i datuma, te izvršavanje niza radnji na njima koristeći lokalno vrijeme ili srednje vrijeme po Greenwichu (GMT).

Božić.setFullYear (xmas.getFullYear () + 1);/ * Datum Božića sljedeće godine * /

var weekdau = Christmas.getDay ();// Dan u tjednu Božića.

document.write ("Danas:" + new_day.toLocaleString ());// String vrijednost trenutnog datuma i vremena.

U JavaScriptu, za objekt Date (), funkcije su definirane (ne pozivaju se kroz objekt Date (), dakle, ne metode, već funkcije) za pretvaranje datuma, koji je dan u numeričkom obliku ili kao niz, u interni prikaz u milisekundama, koji se koristi u nekim operacijama s datumima.

Konstruktor prilikom stvaranja nove instance objekta Date () može se koristiti na sljedeće načine:

novi datum ();/ * Konstruktor Date () bez argumenata stvara objekt čija je vrijednost jednaka trenutnom datumu i vremenu. * /

novi datum (broj_milisekunde);/ * Jedina brojčana vrijednost navedena je u konstruktoru, koristi se kao prikaz datuma u milisekundama, što je isto kao i vrijednost koju vraća metoda getTime (). * /

novi datum (datum_string_representation);/ * Ako je jedan argument niza naveden u konstruktoru, on se tretira kao string prikaz datuma u formatu koji prihvaća metoda Date.parse (). * /

novi datum (godina, mjesec, dan, sati, minute, sekunde, milisekunde);/ * Konstruktoru se može proslijediti od dva do sedam brojčanih argumenata koji specificiraju pojedinačna polja datuma i vremena. Osim prva dva polja koja označavaju godinu i mjesec, svi ostali argumenti nisu obavezni. * /

Datum () može se pozvati kao funkcija bez navođenja novog operatora. U ovom slučaju, svi proslijeđeni argumenti se zanemaruju i vraćaju se trenutni datum i vrijeme.

Naznačimo koje vrijednosti argumenti mogu imati kada se koriste različiti oblici konstruktora:

number_milliseconds je broj milisekundi između željenog datuma i ponoći 1. siječnja 1970. UTC. Recimo, ako je argument 5000, kreirat će se datum koji predstavlja pet sekundi nakon ponoći 01.01.1970.

date_string_representation - argument specificira datum i neobavezno vrijeme kao niz. Niz mora biti naveden u formatu koji razumije metoda Date.parse ().

godina - četiri znamenke godine. Radi kompatibilnosti s ranijim implementacijama JavaScripta, ako je vrijednost argumenta između 0 i 99, broj 1900 se dodaje njegovoj vrijednosti.

dan je cijeli broj od 1 do 31 koji predstavlja dan u mjesecu. Argument je neobavezan.

sati je cijeli broj od 0, što znači ponoć, do 23. Ovaj argument nije obavezan.

minute je cijeli broj od 0 do 59. Ovaj argument nije obavezan.

sekundi. Sekunde u minutama, navedene kao cijeli broj od 0 do 59. Neobavezni argument.

milisekundi je broj milisekundi, naveden kao cijeli broj, u rasponu od 0 do 999. Ovaj argument nije obavezan.

Pozdrav svima zainteresiranima za JavaScript višedimenzionalne nizove i sortiranje. U aktualnoj publikaciji pokušat ću detaljno obraditi ovu temu.

Stoga, nakon čitanja ovog članka, naučit ćete zašto se višedimenzionalni nizovi koriste u web aplikacijama, kako se stvaraju i kako se njima može manipulirati i sortirati. Bacimo se na učenje!

Kako se stvaraju višedimenzionalni nizovi i čemu služe?

Za početak, vrijedi se prisjetiti kako se stvara redoviti jednodimenzionalni niz.

var niz =

Sada zapamtite da je višedimenzionalni niz niz nizova. Slažem se, zvuči kao tautologija. Međutim, ponovno pročitajte definiciju. Doista, višedimenzionalni niz sastoji se od određenog broja ugniježđenih.

Razmotrite sljedeću situaciju. Na početku igre korisnik upisuje svoje ime, a nakon završetka na ekranu se prikazuje tablica rejtinga s imenima igrača i njihovim rekordima.

Jasno je da su takve informacije pohranjene u bazi podataka. Ali kada ga izvučemo iz baze podataka, dobivamo višedimenzionalni niz. Uostalom, svaki podniz sadrži igračevu prijavu i broj osvojenih bodova.

Sve će izgledati ovako:

var rezultati = [["Markus", 333], ["Nataša", 211], ["Aleksej", 124]];

Kao što vidite, informacije se mogu pohraniti heterogeno. To mogu biti nizovi, brojevi, pa čak. To je moguće jer su nizovi u neupisani.

U ovom slučaju, pristup elementima se odvija preko dvostrukog operatora.

Da biste konsolidirali gradivo, analizirajte mali program.

Rezultati =

Nizovi su prilično prikladan način za pohranu naručenih složenih podataka tijekom njihove obrade. Osim toga, vrlo je prikladno raditi s njima, a istovremeno je brzina njihove obrade prilično visoka.

Metode sortiranja podataka

Za nizove u JavaScriptu postoji ugrađena metoda tzv sortirati ()... Ovaj alat je vrlo fleksibilan. A sada ću objasniti zašto.

Ako koristite metodu bez parametara, ona automatski poreda podnipove prema prvom elementu abecednim redom. Dakle, prilikom poziva rezultate.sortirati () raščlanjeni objekt će izgledati ovako:

Aleksej, 124

Markus, 333

Nataša, 211

A ako zamijenite elemente u svakom ugniježđenom nizu, dobit ćete:

124, Aleksej

211, Nataša

333, Markus

U ovom slučaju, radi usporedbe, svi elementi se privremeno pretvaraju u nizove.

Ako vam je za rješavanje određenog problema potrebna funkcija koja sortira elemente na nestandardan način, tada je možete sami napisati i proslijediti je kao parametar sortirati ()... Treba imati na umu da korisnički definirana funkcija mora vratiti:

  • pozitivan broj (obično se bira 1) ako prva navedena stavka slijedi drugu u usporedbi;
  • negativan broj (obično -1) ako druga odabrana stavka treba slijediti prvu;
  • nula ako su dvije testirane vrijednosti jednake.

Kao primjer, uzmimo početni niz rezultate sortirati po točkama. Štoviše, rezultati će biti razvrstani od najvišeg prema najnižem. To se može učiniti na dva načina.

U prvoj verziji sam promijenio logiku sortiranja, t.j. u situaciji kada je potrebno vratiti pozitivan broj, vraćam negativan i obrnuto.

Tablica zapisa:

Ali u drugoj metodi ostavio sam logiku sortiranja netaknutom, ali sam dodatno koristio drugu metodu - obrnuto ()... Kao što ime sugerira, obrnuto obrće redoslijed elemenata.

Stoga će funkcija sort () izgledati ovako:

1 2 3 4 5 funkcija RecordSort (a, b) (ako (a> b) vrati 1; inače ako (a< b) return -1; else return 0; }

funkcija RecordSort (a, b) (ako (a> b) vrati 1; inače ako (a< b) return -1; else return 0; }

Nakon toga, dodajmo gornju metodu.

Zaključak se donosi na sličan način.

Želim vam skrenuti pozornost na jednu važnu točku. Kada koristite ove funkcije, sve promjene se događaju u nizu na koji ih primjenjujete. Stoga, ako trebate zadržati izvorni oblik podataka, stvorite kopiju, a zatim je uredite.

Pa, pa sam govorio o višedimenzionalnim nizovima i njihovom sortiranju. Ako vam se svidio članak, pretplatite se na blog i čitajte druge jednako zanimljive publikacije. Bio bih zahvalan na repostima. Do sljedećeg puta!

Doviđenja!

Srdačan pozdrav, Roman Chueshov