JavaScript je moderní programovací jazyk, jedinečný z hlediska syntaxe a sémantiky. Je specifický, ale snadno použitelný a efektivní, pokud jde o vývoj dynamického a spolehlivého síťového zdroje.
JavaScriptové pole je moderní forma reprezentace dat, která se liší od podobných struktur jiných jazyků. Zkušenosti v oblasti zastoupení a zpracování informací pro javascript měl vždy významný význam. Je zde v prohlížeči, že dialog s klientem funguje. Zde je důležité rychle rušit řadu informací ze serveru a malovat pomocí potřebných značek. Jazyky serveru tvoří obsah a strukturu stránek, ale jejich správné použití je záležitostí jazyka prohlížeče.
Profesionální vývojář používá proměnné v jednoduchých případech, když "dělá" (...) {...}, "ovládá" zatímco (...) {...} "používá" přepínač () {case "": ...} Ve všech ostatních případech jsou informace reprezentovány datovými strukturami.
Zřídka jsou data představována jednoduchou sadu proměnných. Jedná se o statický konstrukt, který sjednocuje pojmenování a užití. Práce s proměnnými množinami je omezena množstvím poskytnutých informací, a proto se používá pro jednoduché algoritmy a lokální funkce.
JavaScript pole je dynamičtější a prostornější verze proměnné, pokud jde o datovou strukturu. Indexováním pole, například podle hodnotového řádku, času nebo jiného parametru, můžete mít pro každý index jiný obsah. Pole může být sada (definovaná struktura) proměnných, která při umístění do jiného pole bude představovat dynamiku takové struktury buď parametrem nebo časem.
Nakonec můžete vytvořit pole objektů nebo systém objektů - koncepční kombinaci dat, která má strukturu, obsah a soubor metod, které "samy" vykazují odpovídající vlastnosti.
Ve všech uvedených případech jsou informace předloženy pevným, formálním a přístupným způsobem pro zpracování pomocí jazyka. Pouze pokud je samotný kód manipulován "samotným systémem" objektů a není povolena konstrukce mimo metodu objektu, můžeme říci, že existuje možnost zpracovat a vytvořit informace, které nejsou během formování algoritmu formalizovány nebo formalizovány.
V prvním přiblížení je pole JavaScript podobné syntaktickým konstrukcím jiných jazyků. Sémantika je rovnocenná, s výjimkou forem svého vyjádření. Můžete použít syntaxi a sémantiku jazyka JavaScript a úspěšně vyřešit jakýkoli složitý úkol.
Neexistuje šance, že bude dosažena plná mobilita kódu a přizpůsobení vytvořeného zdroje měnícím se podmínkám aplikace, může být úspěšně provedena adekvátní reakce na jakoukoli nepředvídatelnou změnu příchozích informací a pravidla pro jejich zpracování.
Standardní syntaxe jazyka definování Javascriptové pole Funkce a metody jsou poměrně rozsáhlé, ale v praxi se obvykle používá jen část.
forEach je nejzajímavější metoda pole. JavaScript poskytuje vývojáři možnost definovat svou vlastní funkci, aby pracovala s každým prvkem pole. Neexistuje žádný pojem "přerušení", to znamená, že každý by měl být považován za operaci na všech prvcích pole.
zde 'val' je prvek, 'ind' je jeho index a 'arr' je skutečné pole 'aData'. Funkce může provádět jakékoliv akce na prvcích pole. Má-li určitý význam, bude to vývojářská operace a ne syntaxe jazyka, to znamená, že pole bude mít nejen obsah, ale také operace, které jsou k dispozici podle jeho účelu v obecném kontextu algoritmu.
Pomocí pole objektů jazyka JavaScript můžete jít nad rámec syntaxe. Formálně každá proměnná objektu a každá konstrukce její metody spočívá v syntaxi jazyka, ale v kontextu objektově orientovaného programování vzniká systémový efekt - nová kvalita, která nabízí vlastní syntaxi: "nezávislé" vztahy mezi objekty.
Klasická koncepce vývoje softwaru: překlad formálního algoritmu do konkrétních syntaktických konstrukcí jazyka. Na každém místě kódu existuje tuhé spojení s tím, co se stalo s tímto místem a co se stane po něm.
Objektově orientovaný vzhled vypadá radikálně odlišný. Existují objekty, které mají obsah a vlastnosti. To je to, co poskytuje vztah (kód, který je implementuje) objektů navzájem. Žádný kód mimo tyto vztahy by neměl být.
V jazyce JavaScript má prvek pole a přístupový mechanismus původní kontext. Všechny prvky jsou ekvivalentní, ale poslední je zvláštní. Pole není předmětem, ale prohlížením pole přes hranol jeho posledního prvku v rámci jeho mechanismu přístupu získáte objekt, který mění jeho podstatu a vlastnosti - to je významné opomenutí současné (moderní) koncepce objektově orientovaného programování, které jsou nepřímo implementovány vývojáři jazyk javascript.
Ideální a krásná konstrukce pole:
Můžete psát a "inteligentněji":
nebo velmi "notoricky známý":
JavaScript nevyžaduje povinné uvedení počtu prvků a neukládá žádná pravidla týkající se indexování, velikosti nebo typů prvků. Na tomto jednoduchém základě se nedoporučuje zneužívání jejich práv jejich omezením: všechny pole by měly být reprezentovány a využívány co nejvíce volně.
Každý prvek matice má index - číselnou hodnotu od 0 do 2 32 , ale jeden by se neměl přiblížit tomuto číslu. Praktické a pragmatické pole JavaScript je desítky, stovky, tisíce elementů, ale nic víc. Pokud potřebujete více, je lepší nejprve provést revizi algoritmu nebo technického úkolu, a pokud se nic nestane, pak v hloubkách prohlížeče mohou být navrženy pouze multimilionové masivní struktury.
Indexy pole nejsou vždy konzistentní. V Javě odstranění prvku pole znamená vytvoření "díry" v něm. Při procesu využívání pole se může stát, že se jedná o "síto" indexů, které neovlivňují jeho výkon, bezpečnost jiných prvků.
JavaScript je zbaven stručného PHP konstrukce: $ aData [] = "nový prvek"; a navrhuje striktně uvést, co je přidáno a v jakém konkrétním prvku (s jakým indexem) se hodnota změní. Typ položky nezáleží. Pole může obsahovat vše, co je povoleno syntaxem, v libovolném pořadí a sortimentu.
Metody push () a pop () eliminují nedostatek "$ aData [] = ...", ale upozorní vývojáře na myšlenku posledního prvku a připomínají vám koncept zásobníku. Podobná dvojice metod - unshift () a shift () - pracuje s prvním prvkem pole a posunuje ostatní prvky směrem k velkým indexům.
Pro javascript je délka pole relativní pojem. Ne vždy to odráží skutečný počet prvků a pokud je vázán na metodu délky, například ve smyčce, měli byste vždy zkontrolovat, zda element s požadovaným indexem skutečně existuje.
Systémy jsou "vždy jednorozměrné", ale každý systém se skládá z vnitřních subsystémů a sám je součástí něčeho více globálního. Stejně jako obecný koncept systémů neexistuje v jazyce JavaScript žádné dvojrozměrné pole, ale může být snadno vytvořeno přidáním dalších polí jako prvků pole.
Indexace pomocí interních polí se vytváří přirozeným způsobem: "aData [i] [j] ... [z]", ale myšlenka je vždy vhodnější:
V jazyce JavaScript je povoleno přidání proměnné libovolného typu a v libovolném pořadí do pole. Do obecného pole můžete také přidat něco obecných pravidel. Chcete-li získat přístup k prvkům, můžete použít posloupnost [] závorek, ale vždy je lepší provést přeřazení, které je omezeno pouze na jeden pár [] v každém výrazu.
Multidimenzionální pole JavaScript - to je v pořádku poskytnutou syntaxí a je v praxi zcela použitelná. Ale, stejně jako v jiných jazycích, je nejlepší, pokud jsou rozměry menší a čitelnost kódu je vyšší. Programy jsou samozřejmě psány pro počítače, tlumočníky a překladače, ale lidé je píší, lidé je doprovázejí, a čím vyšší je dostupnost kódu pro autora a třetího vývojáře, tím je praktičtější.
Syntaxe JavaScript vám umožňuje přidat prvky do pole jednoduchým vytvořením nového indexu:
Po těchto příkazech jazyka JavaScript bude pole aData obsahovat 101 prvků. Číslování začíná z indexu 0. Pro metodu délky nezáleží na tom, kolik prvků bylo v poli v době provádění příkazu "aData [100] = ...;".
Chcete-li odstranit prvek pole v jazyce JavaScript, můžete použít jeho metody pop () nebo shift (). V prvním případě výsledkem var last = aInfo.pop () bude "meloun" a v poli zůstanou: "jablko", "hruška", "mandarinka". Ve druhém případě var first = aInfo.shift () bude 'apple' a zbývající prvky se přesunou na začátek.
Tato volba je velmi účinná, když pole objektů jazyka JavaScript je předmětem změny sémantiky a obsahu. Mechanismus odběru vzorků prvkem s jeho odstraněním umožňuje použít aktuální prvek pole a jít rovnou na další. Stejně jako v zásobníku: převzato ze zásobníku, použito - a dostalo se přístupu k dalšímu prvku.
Při použití operátoru JavaScript můžete odstranit prvek pole následujícím způsobem:
Po provedení tohoto příkazu bude element skutečně zůstat v poli, ale jeho hodnota bude 'undefined'. Pomocí metody řezu může být pole JavaScript "rozděleno":
Původní pole aInfo zůstane nezměněno a pouze jablka a hruška spadají do aData. Pokud píšete:
pak pouze "mandarinka" a "meloun" zůstávají v poli aData.
Operace jazyka JavaScript: třídění pole, převedení pole na řetězec, vytváření pole z řetězce a změna pořadí prvků jsou nejžádanější. Tyto operace jsou prováděny metodami:
Jedná se o nejzajímavější a nejčastěji používané nástroje pro zpracování polí a řetězců. Zajímavou vlastností: pro JavaScript je prvek pole a řetězec zvláštními komplementárními vlastnostmi. Pokud nepovažujeme charakteristickou vlastnost moderních jazyků: každá proměnná je vždy řetězec, to znamená, že ji lze vždy považovat za řetězec, pak transformace pole do řetězce a zpět je velmi populární a efektivní operace.
Použití spojovacího / děleného páru je obzvláště originální: spojení prvků pole do řetězce se děje na jednom oddělovači (často prázdný, to znamená, že prvky jsou sloučeny do jednoho řetězce) a inverzní transformace do pole se provádí na jiném oddělovači.
Pokud nezohledňujete implementaci metod fúze a separace, použití tohoto páru vám umožní vytvořit vynikající algoritmy.
Reverzní () funkce se aplikuje přímo na pole a obráti se pořadí prvků v něm. Funkce sort () třídí prvky v zdrojovém poli, vrací výsledky seřazené abecedně.
Pokud předáte funkci jako parametr řazení (funkce (a, b) {...; return result;}), můžete řídit pořadí řazení pomocí vlastního algoritmu. Taková funkce by měla vrátit hodnotu '0', pokud 'a' a 'b' jsou ekvivalentní, '-1' - pokud 'a' předchází 'b' a '1' - pokud 'b' předchází 'a'.
Pokud není možné získat nesprávný výsledek, pokud jde o funkci reverse (), pak s ohledem na třídění je nezbytný algoritmus jeho provedení a testování písemného kódu. To je obzvláště důležité pamatovat. pokud pole obsahuje znaky (řetězce) národní abecedy.
Pro JavaScript je asociativní pole primitivní forma objektu. Jednoduše neexistují žádné metody, ale existuje jen pár klíčů a hodnot. Pro označování takového pole je použita dvojice svislých závorek.
V tomto příkladu se používá pole cSortCols, jehož prvky mají tři hodnoty:
V závislosti na tom, co přesně je tříděno (v tomto příkladu byl web určen pro osobní dopravu na minibusech): cestující, dopravci, autobusy nebo města. V tabulkách prvků je tedy možné třídit pouze konkrétní sloupce. Proto na každé konkrétní stránce má pole cSortCols specifický obsah: cUsersSort, cCompaniesSort, cBusesSort nebo cCitiesSort.
Vytvoření asociativního pole v jazyce JavaScript může jít mnohem dál. Uvedený příklad řazení je konkrétním řešením velmi konkrétního úkolu: cesta z situace, kdy se vlastní funkce JavaScript (třídění) nepoužije.
Datové struktury jsou velmi dobré a použití variabilních sad je velmi nepraktické. Nikdo však nesmí používat názvy proměnných jako indexy. Pole, ve kterém jsou indexy reprezentovány názvy proměnných, je nádherná datová struktura pro mobilní zařízení. Nemusí mít nutně všechny indexy, ale na každém místě programu budou mít správné složení.
Vývojář může navrhnout inteligentní pole, která odrážejí správná struktura dat na správném místě. Zároveň je možné, že nebudete pokračovat v plném využití objektů, stačí použít jejich schopnosti ve fázi popisu struktury a obsahu dat.
Na rozdíl od jazyků serveru, ve kterých je vždy jasné, co zpracovat a jaký by měl být výsledek, vyžaduje JavaScript specifické víceúrovňové myšlení. Stránky stránek mohou spouštět události skriptů a volat neočekávaně. Dokonce i tehdy, když je technický úkol pro danou lokalitu realizován ideálním způsobem a dialog s návštěvníkem nemůže překročit stanovené limity, dochází k překvapení.
Charakteristickým rysem jazyka JavaScript je, že prvek stránky může aktivovat určitý proces. V důsledku toho budou některé údaje, pole, objekty změněny. Jiný proces by měl mít představu o tom, co se změnilo.
V ideálním případě by měly být procesy namalovány na objekty a pole tak, aby každá událost, iniciující jeden proces, předurčila vše, co je nezbytné pro všechny ostatní procesy, které jsou na něm závislé.
Nemůžete přivítat objektově orientované programování a nesnažíte se zajistit, aby všechny stránky webu byly vybaveny plnohodnotnými systémy objektů, které samy vstupují do vztahů a neexistuje jediný řádek kódu mimo metody takových objektů, ale i v případě výlučně klasického stylu vývoje Javy JavaScript, zejména asociativní a ozbrojené sady implementací funkce forEach, jsou vynikajícím nástrojem pro spolehlivý a praktický kód.