JavaScript je suvremeni programski jezik, jedinstven je u smislu sintakse i semantike. To je specifično, ali jednostavno za korištenje i učinkovito kada je u pitanju razvoj dinamičnog i pouzdanog mrežnog resursa.
JavaScript polje je moderan oblik predstavljanja podataka koji se razlikuje od sličnih struktura drugih jezika. Iskustvo u području zastupanja i obrada informacija za javascript je uvijek imao značajno značenje. Upravo ovdje u pregledniku radi dijalog s klijentom. Ovdje je važno brzo rastaviti liniju podataka s poslužitelja i obojiti je pomoću potrebnih oznaka. Jezici poslužitelja oblikuju sadržaj i strukturu stranica, ali njihova pravilna upotreba je briga jezika preglednika.
Stručni razvojni programer koristi varijable u jednostavnim slučajevima kada "radi" za (...) {...}, "kontrole" dok (...) {...}, "koristi" switch () {case "": ...}, ... strukturu u U svim drugim slučajevima, informacije su predstavljene strukturama podataka.
Rijetko, podaci su predstavljeni jednostavnim skupom varijabli. To je statički konstrukt koji ujedinjuje zajedništvo u imenovanju i korištenju. Rad s skupovima varijabli ograničen je količinom pruženih informacija, te se stoga koristi za jednostavne algoritme i lokalne funkcije.
JavaScript polje je dinamičnija i prostranija inačica varijable kada je to podatkovna struktura. Indeksiranjem niza, na primjer, vrijednosnom linijom, vremenom ili nekim drugim parametrom, možete imati različite sadržaje za svaki indeks. Niz može biti skup (definirana struktura) varijabli, koje će, kada se smjeste u drugi niz, predstavljati dinamiku takve strukture bilo parametrom ili vremenom.
Konačno, možete stvoriti niz objekata ili sustav objekata - konceptualnu kombinaciju podataka koja ima strukturu, sadržaj i skup metoda koje „same“ pokazuju odgovarajuća svojstva.
U svim tim slučajevima, informacije se prezentiraju na rigidan, formalan i pristupačan način za obradu putem jezika. Samo ako je sam kod manipuliran "samim sustavom" objekata i nije dopuštena konstrukcija izvan metode nekog objekta, možemo reći da postoji mogućnost obrade i kreiranja informacija koje nisu formalizirane ili formalizirane tijekom izvođenja algoritma.
U prvoj aproksimaciji, polje JavaScripta slično je sintaktičkim konstruktima drugih jezika. Semantika je također ekvivalentna, osim oblika njezina izraza. Možete koristiti sintaksu i semantiku JavaScripta i uspješno riješiti svaki složeni zadatak.
Nema šanse da se postigne potpuna mobilnost koda i prilagodba stvorenog resursa promjenjivim uvjetima primjene, da se može uspješno postići odgovarajući odgovor na svaku nepredviđenu promjenu ulaznih informacija i pravila za njegovu obradu.
Definiranje sintakse standardnog jezika Javascript polja Funkcije i metode su prilično opsežne, ali u praksi se obično koristi samo dio.
forEach je najzanimljivija metoda niza. JavaScript pruža developeru mogućnost da definira svoju funkciju za rad s svakim elementom polja. Nema pojma 'prekida', to jest, za svaku bi trebalo smatrati operaciju na svim elementima polja.
ovdje 'val' je element, 'ind' je njegov indeks, a 'arr' je stvarni niz 'aData'. Funkcija može izvesti sve radnje na elementima niza. Ako ima određeno značenje, to će biti rad programera, a ne sintaksa jezika, tj. Polje će imati ne samo sadržaj, nego i operacije koje su mu dostupne u skladu sa svojom svrhom u općem kontekstu algoritma.
Koristeći niz JavaScript objekata, možete ići dalje od sintakse. Formalno, svaka objektna varijabla i svaka konstrukcija njezine metode leži u sintaksi jezika, ali u kontekstu objektno orijentiranog programiranja nastaje sustavni efekt - nova kvaliteta koja nudi vlastitu sintaksu: "neovisni" odnosi između objekata.
Klasični koncept razvoja softvera: prevođenje formalnog algoritma u konkretne sintaktičke konstrukcije jezika. Na bilo kojem mjestu koda postoji kruta veza s onim što se dogodilo s ovim mjestom i što će se dogoditi nakon njega.
Objektno orijentirana formula radikalno se razlikuje. Postoje objekti koji imaju sadržaj i svojstva. To je ono što osigurava međusobne odnose (kod koji ih implementira) objekata. Nijedan kôd izvan tih odnosa ne bi trebao biti.
U JavaScriptu, element polja i mehanizam pristupa imaju izvorni kontekst. Svi elementi su ekvivalentni, ali posljednji je poseban. Niz nije objekt, ali gledanjem niza kroz prizmu njegova posljednjeg elementa, u kontekstu mehanizma pristupa, možete dobiti objekt koji mijenja njegovu bit i svojstva - to je važan propust postojećeg (modernog) koncepta objektno orijentiranog programiranja, koji se neizravno implementiraju od strane programera jezik JavaScripta.
Idealna i lijepa konstrukcija niza:
Možete napisati i više "inteligentno":
ili vrlo "zloglasni":
JavaScript ne inzistira na obaveznom navođenju broja elemenata i ne nameće nikakva pravila u vezi s indeksiranjem, veličinama ili vrstama elemenata. Na toj jednostavnoj osnovi, ne preporučuje se da se njihova prava zloupotrebljavaju ograničavanjem: sva polja moraju biti predstavljena i korištena što je više moguće slobodno.
Svaki element niza ima indeks - numeričku vrijednost od 0 do 2 32 , ali ne treba pristupiti toj slici. Praktičan i pragmatičan JavaScript niz je desetaka, stotina, tisuća elemenata, ali ne više. Ako vam je potrebno više, bolje je najprije revidirati algoritam ili tehnički zadatak, a ako se ništa ne dogodi, onda se u dubinama preglednika mogu dizajnirati samo višemilijunske masivne strukture.
Indeksi polja nisu uvijek dosljedni. U JavaScriptu, uklanjanje elementa polja znači stvaranje "rupe" u njemu. U procesu korištenja niza može se pretvoriti u “sito” indeksa, što ne utječe na njegovu učinkovitost, sigurnost drugih elemenata.
JavaScript je lišen sažetog PHP konstrukta: $ aData [] = "novi element"; i predlaže strogo naznačiti što se dodaje i u kojem se elementu (s kojim indeksom) vrijednost mijenja. Vrsta stavke nije važna. Niz može sadržavati sve što je dopušteno sintaksom, bilo kojim redoslijedom i asortimanom.
Metode push () i pop () eliminiraju nedostatak "$ aData [] = ...", ali privlače pažnju razvojnog programera na ideju posljednjeg elementa i podsjećaju vas na koncept stog. Sličan par metoda - unshift () i shift () - radi s prvim elementom polja, prebacujući ostale elemente prema velikim indeksima.
Za javascript, duljina niza je relativni pojam. Ona ne odražava uvijek stvarni broj elemenata i, ako je vezana za metodu duljine, na primjer, u petlji, uvijek trebate provjeriti postoji li element s traženim indeksom.
Sustavi su "uvijek jednodimenzionalni", ali svaki se sustav sastoji od unutarnjih podsustava i sam je dio nečega globalnijeg. Poput općeg koncepta sustava, u JavaScriptu ne postoji dvodimenzionalni niz, ali se lako može stvoriti dodavanjem drugih polja kao elemenata niza.
Indeksiranje unutarnjim nizovima formira se na prirodan način: "aData [i] [j] ... [z]", ali ideja je uvijek poželjnija:
U JavaScriptu je dopušteno dodavanje varijable bilo kojeg tipa i bilo kojem redoslijedu u niz. Također možete dodati nešto internom nizu prema općim pravilima. Da biste pristupili elementima, možete koristiti niz [] zagrada, ali je uvijek poželjno izvršiti preraspodjelu, ograničenu na samo jedan par [] u svakom izrazu.
Višedimenzionalni JavaScript nizovi - u redu je osigurava sintaksa i prilično je primjenjiva u praksi. No, kao iu drugim jezicima, najbolje je kada su dimenzije manje i čitljivost koda veća. Programi su, naravno, pisani za računala, tumače i kompilatore, ali ljudi ih pišu, ljudi ih prate, a što je veća dostupnost koda za autora i treće strane, praktičniji je.
JavaScript sintaksa omogućuje dodavanje elemenata nizu jednostavnim kreiranjem novog indeksa:
Nakon ovih JavaScript izraza, aData niz će imati 101 element. Numeriranje počinje od indeksa 0. Za metodu duljine nije važno koliko je elemenata bilo u nizu u vrijeme izvođenja "aData [100] = ...;".
Da biste uklonili element polja u JavaScriptu, možete koristiti njegove metode pop () ili shift (). U prvom slučaju, rezultat var last = aInfo.pop () bit će 'lubenica', au polju ostaje 'jabuka', 'kruška', 'mandarina'. U drugom slučaju var prvo = aInfo.shift () bit će 'jabuka', a preostali će se elementi pomaknuti na početak.
Ova opcija je vrlo učinkovita kada je niz JavaScript objekata objekt mijenjanja semantike i sadržaja. Mehanizam uzorkovanja elementa s njegovim uklanjanjem omogućuje vam da koristite trenutni element polja i idete ravno na sljedeći. Kao što je u stog: uzeti iz stog, koristi - i dobio pristup sljedećem elementu.
Kada koristite JavaScript operatora, možete izbrisati element polja kako slijedi:
Nakon izvršavanja ove naredbe, element će zapravo ostati u nizu, ali će njegova vrijednost biti 'nedefinirana'. Koristeći metodu odsječka, polje JavaScripta može se "podijeliti":
Izvorni aInfo niz će ostati nepromijenjen, a samo će jabuka i kruška pasti u podatke. Ako pišete:
onda samo 'mandarina' i 'lubenica' ostaju u nizu podataka.
JavaScript operacije: razvrstavanje niza, pretvaranje niza u niz, oblikovanje niza iz niza, a mijenjanje redoslijeda elemenata je najtraženije. Ove operacije se izvode pomoću metoda:
To su najzanimljiviji i najkorisniji alati za obradu nizova i nizova. Zanimljiva značajka: za JavaScript, element polja i niz su specifične komplementarne kvalitete. Ako ne uzmemo u obzir karakteristične značajke suvremenih jezika: svaka varijabla je uvijek niz, to jest, uvijek se može smatrati nizom, a transformacija niza u string i natrag vrlo je popularna i učinkovita operacija.
Upotreba parova spoja / razdvajanja je posebno originalna: sjedinjenje elemenata niza u niz se pojavljuje na jednom razdjelniku (često prazan, to jest, elementi se spajaju u jedan niz), a inverzna transformacija u niz se izvodi na drugom graničniku.
Ako ne uzmete u obzir implementaciju metoda spajanja i razdvajanja, korištenje ovog para omogućuje stvaranje izvrsnih algoritama.
Funkcija reverse () primjenjuje se izravno na niz i mijenja redoslijed elemenata u njemu. Funkcija sort () sortira elemente u izvornom nizu, vraća abecedno sortirani rezultat.
Ako proslijedite funkciju kao parametar za sortiranje (funkcija (a, b) {...; povratni rezultat;}), možete upravljati redoslijedom sortiranja pomoću vlastitog algoritma. Takva funkcija treba vratiti '0' ako su 'a' i 'b' ekvivalentni, '-1' - ako 'a' treba prethoditi 'b' i '1' - ako 'b' treba prethoditi 'a'.
Ako nema šanse dobiti netočan rezultat u odnosu na funkciju reverse (), onda je u odnosu na sortiranje algoritam njegovog izvršenja i testiranja pisanog koda ključan. Ovo je posebno važno zapamtiti. kada niz sadrži znakove (nizove) nacionalne abecede.
Za JavaScript, asocijativni niz je primitivni oblik objekta. Jednostavno nema metoda, ali postoji samo par "ključeva" i "vrijednosti". Par zavojitih zagrada koristi se za označavanje takvog niza.
U ovom primjeru koristi se niz cSortCols, čiji elementi uzimaju tri vrijednosti:
Međutim, ovisno o tome što je točno razvrstano (u ovom primjeru, stranica je dizajnirana za prijevoz putnika na minibusima): putnici, prijevoznici, autobusi ili gradovi. Stoga je u tablicama elemenata dopušteno sortirati samo po određenim stupcima. Stoga, na svakoj određenoj stranici, niz cSortCols ima specifičan sadržaj: cUsersSort, cCompaniesSort, cBusesSort ili cCitiesSort.
Stvaranje asocijativnog polja u JavaScriptu može ići mnogo dalje. Primjer sortiranja je posebno rješenje vrlo specifičnog zadatka: izlaz iz situacije kada vlastita JavaScript funkcija (sortiranje) nije primjenjiva.
Strukture podataka su vrlo dobre, a korištenje skupova varijabli je vrlo nepraktično. Ali nitko ne zabranjuje upotrebu naziva varijabli kao indeksa. Niz u kojem su indeksi predstavljeni imenima varijabli je prekrasna mobilna podatkovna struktura. Ne mora nužno imati sve pokazatelje, ali će u svakom mjestu programa biti u pravom sastavu.
Programer može dizajnirati pametne nizove koji odražavaju prave strukture podataka na pravom mjestu. U isto vrijeme, moguće je da se ne nastavi s punim korištenjem objekata, da se samo iskoriste njihove mogućnosti u fazi opisivanja strukture i sadržaja podataka.
Za razliku od poslužiteljskih jezika, u kojima je uvijek jasno što procesirati i što bi trebao biti rezultat, JavaScript zahtijeva specifično višerazinsko razmišljanje. Stranica web-mjesta može stvoriti skriptne događaje i pozive na neočekivane načine. Čak i kada je tehnički zadatak za gradilište izveden na idealan način, a dijalog s posjetiteljem ne može ići izvan utvrđenih granica, događaju se iznenađenja.
Značajka JavaScripta je da element stranice može aktivirati određeni proces. Zbog toga će se promijeniti određeni podaci, nizovi, objekti. Drugi proces treba imati ideju o tome što se promijenilo.
U idealnom slučaju, procesi trebaju biti oslikani na objektima i nizovima tako da svaki događaj, koji inicira jedan proces, predodređuje sve što je potrebno za sve ostale procese ovisne o njemu.
Ne možete prihvatiti objektno-orijentirano programiranje i ne nastojati osigurati da sve stranice web-mjesta imaju potpuno opremljene sustave objekata koji sami ulaze u odnose i da ne postoji niti jedna linija koda izvan metoda takvih objekata, ali čak iu slučaju isključivo klasičnog stila razvoja JavaScript nizovi, posebno asocijativni i naoružani skupovi implementacija funkcije forEach, izvrstan su alat za pouzdan i praktičan kod.