Vícerozměrná pole v příkladech javascriptu. Pole JavaScriptu a jeho tvorba. Vše o polích JavaScript

S poli lze pracovat pomocí různých metod poskytovaných konstruktorem pole.

Metody pop/push a shift/unshift

Podívejme se na metody pop() a push(). Tyto metody umožňují pracovat s poli, jako by to byly zásobníky. Zásobník je datová struktura, ve které je přístup k prvkům organizován podle principu LIFO (anglicky: last in - first out, "last in - first out"). Princip fungování stohu lze přirovnat ke stohu talířů: chcete-li vzít druhý shora, musíte odstranit horní. Jak to funguje je znázorněno na obrázku:

A tak se vraťme k metodám push() a pop(). Metoda push() přidá jeden nebo více nových prvků na konec pole a vrátí jeho novou délku. metoda pop() - odstraní poslední prvek pole, zkrátí délku pole a vrátí hodnotu, kterou odstranil. Stojí za zmínku, že obě tyto metody upravují pole na místě, spíše než aby vytvořily jeho upravenou kopii.

Var foo = ; // foo: foo.push(1,2); // foo: Vrátí 2 foo.pop(); // foo: Vrátí 2 foo.push(3); // foo: Vrátí 2 foo.pop(); // foo: Vrátí 3 foo.push(); // foo: ] Vrátí 2 foo.pop() // foo: Vrátí foo.pop(); // foo: Vrátí 1 var ovoce = ["hrušky", "banány", "jablka"]; var sbíral = ovoce.pop(); document.write("Vybral jsi mě" + vybral);

Zkuste »

Metody shift() a unshift() se chovají v podstatě stejně jako pop() a push(), až na to, že vkládají a odebírají prvky na začátek pole. Metoda unshift() posouvá existující prvky na větší indexy, aby se vytvořil prostor pro nové prvky, přidává jeden nebo více prvků na začátek pole a vrací novou délku pole. Metoda shift() odstraní první prvek pole a vrátí jeho hodnotu, přičemž posune všechny následující prvky tak, aby zabíraly volné místo na začátku pole.

Var f = ; // f: f.unshift(1); // f: Vrací: 1 f.unshift(22); // f: Vrací: 2 f.shift(); // f: Vrací: 22 f.unshift(3,); // f:,1] Vrací: 3 f.shift(); // f:[,1] Vrací: 3 f.shift(); // f: Vrací: f.shift(); // f: Vrátí: 1

Metoda Array.join() se používá ke spojení prvků pole do jednoho řetězce. Metodě lze předat volitelný argument řetězce, který bude použit k oddělení prvků v řetězci. Pokud není oddělovač zadán, výchozím oddělovacím znakem při volání metody bude čárka.

Var a = ["Vítr","Déšť","Oheň"]; var myVar1 = a.join(); //"Vítr,Déšť,Požár" var myVar2 = a.join(", "); //"Vítr, déšť, oheň" var myVar3 = a.join(" + "); //"Vítr + déšť + oheň" document.write(myVar1 + "
" + myVar2 + "
" + myVar3); Zkuste "

Metoda Array.join() je inverzní k metodě String.split(), která vytváří pole rozdělením řetězce na fragmenty.

obrácená metoda

Metoda Array.reverse() obrátí pořadí prvků v poli a vrátí pole s přeuspořádanými prvky. Tato metoda nevytváří nové pole s přeuspořádanými prvky, ale spíše je mění pořadí v existujícím poli.

Var myArr = ["jeden", "dva", "tři"]; document.write(myArr.reverse());

Zkuste »

metoda concat

Metoda Array.concat() vytvoří a vrátí nové pole obsahující prvky původního pole, na kterém bylo zavoláno concat(), postupně rozšířené o hodnoty všech argumentů předávaných concat(). Pokud je některý z těchto argumentů sám polem, budou přidány všechny jeho prvky. Názvy polí se používají jako argumenty a jsou specifikovány v pořadí, ve kterém mají být jejich prvky kombinovány.

Var a = ; a.concat(4, 5) //Vrátí a.concat(); //totéž - vrátí a.concat(,) //Vrátí

způsob řazení

Metoda Array.sort() seřadí prvky pole na místě a vrátí seřazené pole. Pokud je metoda sort() zavolána bez argumentu, seřadí prvky pole v abecedním pořadí (dočasně je převede na řetězce, aby se provedlo porovnání). Metoda sort() může mít porovnávací funkci jako argument, který určuje pořadí řazení prvků.

Var a = ["Kiwi", "Pomeranče", "Hrušky"]; a.sort(); var s = a.join(", "); //Pomeranče, Hrušky, Kiwi document.write(s); //příklad s čísly var myArr = ; myArr.sort(); document.write(myArr); //1,10,2 Vyzkoušet »

Chcete-li třídit v jiném než abecedním pořadí, můžete předat porovnávací funkci jako argument metodě sort(). Je však třeba počítat s tím, že porovnávací funkci si budete muset napsat sami. Tato funkce musí mít dva parametry, protože nastavuje, který z jejích dvou argumentů se má v seřazeném seznamu objevit jako první. Aby bylo snazší pochopit a napsat takovou funkci, existuje několik pravidel, podle kterých bude pořadí prvků určeno:

  • Pokud musí první argument předcházet druhému, porovnávací funkce vrátí záporné číslo (pokud a
  • Pokud musí první argument následovat za druhým, pak porovnávací funkce vrátí kladné číslo (pokud a > b)
  • Pokud jsou dvě hodnoty ekvivalentní (tj. jejich pořadí není důležité), porovnávací funkce vrátí 0 (pokud a == b)

Pro srovnání funkce používá prvky pole jako své argumenty:

Funkce foo(a,b) ( //definuje kontrolní funkci if (a b) return 1; return 0; //if a == b ) var a = ; a.sort(foo); //jako argument je předán pouze název funkce document.write(a.join(", ")); //napiš totéž stručněji var a = ; a.sort(funkce(a,b) ( //použití anonymní funkce návrat a - b; //funkce vrátí hodnotu 0 )); dokument.zapis(a); //1,2,5,10 Vyzkoušet »

První položka v příkladu je napsána tímto způsobem, aby bylo snazší pochopit, jak to funguje. Všimněte si, jak pohodlné je použití anonymní funkce ve druhém fragmentu. Volá se pouze jednou, takže není třeba ji pojmenovávat.

Poznámka: Pokud jsou v poli nedefinované prvky, přesunou se na konec pole.

plátkovou metodou

Metoda Array.slice() se používá ke zkopírování zadané sekce z pole a vrátí nové pole obsahující zkopírované prvky. Původní pole se nemění.

Syntaxe metody:

Název pole.slice(začátek, konec);

Název_pole by měl být nahrazen názvem pole, ze kterého chcete extrahovat konkrétní sadu prvků pro nové pole. Metoda přebírá dva argumenty, které určují začátek a konec vráceného pole. Metoda zkopíruje část pole, začínající od začátku do konce, bez konce. Pokud je zadán pouze jeden argument, vrácené pole bude obsahovat všechny prvky od zadané pozice do konce pole. Můžete použít záporné indexy – počítají se od konce pole.

Var arr = ; arr.slice(0,3); //Vrátí arr.slice(3); //Vrátí arr.slice(1,-1); //Vrátí arr.slice(-3,-2); //Vrátí se

metoda spojování

Metoda Array.splice() je univerzální metoda pro práci s poli. Upravuje pole na místě, místo aby vracelo nové upravené pole, jako to dělají metody slice() a concat(). Metoda splice může odstranit prvky z pole, vložit nové prvky, nahradit prvky – jeden po druhém a současně. Vrátí pole sestávající z odstraněných prvků, pokud nebyl odstraněn žádný prvek, vrátí prázdné pole.

Syntaxe metody:

Název_pole.splice(index, množství, prvek1, ..., prvekN);

První argument určuje index v poli, od kterého se má začít vkládat nebo odebírat prvky. Druhý argument určuje počet prvků, které by měly být odstraněny z pole počínaje indexem zadaným v prvním argumentu, pokud je druhý argument 0, nebudou odstraněny žádné prvky. Pokud je druhý argument vynechán, budou odstraněny všechny prvky pole od zadaného indexu až po konec pole. Při použití záporného čísla pozice budou prvky počítány od konce pole.

Var ovoce = ["pomeranče", "jablka", "hrušky", "hrozny"]; var smazáno = ovoce.splice(2,2); //vrací ["hrušky", "hrozny"] document.write(deleted); var arr = ; arr.splice(4); //Vrátí ; pole se stalo: arr.splice(1,2); //Vrátí ; pole se stalo: arr.splice(1,1); //Vrátí ; pole se stalo: Zkuste »

První dva argumenty metody splice() určují prvky pole, které mají být odstraněny. Po těchto dvou argumentech může následovat libovolný počet dalších argumentů určujících prvky, které mají být vloženy do pole, počínaje pozicí určenou prvním argumentem.

Var ovoce = ["pomeranče", "jablka"]; ovoce.splice(2,0, "melouny"); //vrátí document.write(ovoce); //staly se ["pomeranče", "jablka", "vodní melouny"] var arr = ; arr.splice(2,0,"a","b"); //Vrátí ; stalo se arr.splice(2,2,); //Vrátí ["a","b"]; stalo se ,3,4,5] Zkuste »

Stojí za zmínku, že na rozdíl od concat() metoda splice() nerozděluje pole předaná jako argumenty na jednotlivé prvky. To znamená, že pokud je metodě předáno pole k vložení, vloží pole samotné, nikoli prvky tohoto pole.

metoda toString

Metoda toString() převádí prvky pole na řetězec pomocí čárky jako oddělovacího znaku.

Var arr = ["Mléko","Chléb","Sušenky"]; var jídlo = arr.toString(); dokument.psát(jídlo); //Milk,Bread,Cookies Try »

Všimněte si, že metoda vrací stejný řetězec jako join() při volání bez argumentů.

indexOf a lastIndexOf

Metoda indexOf vrací index prvku, jehož hodnota je rovna hodnotě předané jako argument metodě.

Syntaxe metod indexOf() a lastIndexOf():

Název_pole.indexOf(prvek_hledání, index) název_pole.lastIndexOf(prvek_hledání, index)

První argument metody udává hodnotu prvku, jehož index je třeba najít, druhý argument (nepovinný) udává index, od kterého začne hledání. Pokud existuje několik stejných výskytů, vybere se nejmenší (první) index. Pokud prvek s požadovanou hodnotou není nalezen, metoda vrátí -1. Uvnitř metody se pro vyhledávání používá striktní srovnání (===).

Var a = ; a.indexOf(3); //návrat 2 a.indexOf(3,4); //návrat 6 a.indexOf(35); //návrat -1: neexistuje žádný prvek s touto hodnotou a.indexOf(2); // 1

Metoda lastIndexOf() také vrací index prvku, jehož hodnota se rovná hodnotě předané metodě jako argument. Jediný rozdíl je v tom, že metoda lastIndexOf() vybírá největší (poslední) index.

Var a = ; a.lastIndexOf(3); //návrat 7 a.lastIndexOf(35); //návrat -1: neexistuje žádný prvek s touto hodnotou a.lastIndexOf(2); // 6

Iterační metody

Níže popsané metody jsou iterátory. Všechny moderní prohlížeče mají metody pro práci s poli, které jsou navrženy tak, aby iterovaly prvky a prováděly na nich různé akce. Tyto metody jsou forEach(), map(), filter(), every(), some, reduction() a reductionRight().

Iterují prvky pole od 0 do délky - 1, a pokud prvek existuje, předají jej funkci obsluhy zpětného volání.

pro každého

Syntaxe metody:

Název Array.forEach(zpětné volání, thisArg)

První argument určuje funkci zpětného volání, kterou bude metoda forEach() volat pro každý prvek pole. Implementaci funkce volaného handleru musíte napsat sami. Volaná funkce musí mít tři parametry: první parametr bere jako argument hodnotu prvku pole, druhý - index prvku a třetí - samotné pole. Pokud však potřebujete použít pouze hodnoty prvků pole, můžete napsat funkci pouze s jedním parametrem. Druhý argument - thisArg (nepovinný) bude předán jako hodnota this.

Var arr = ; funkce foo(hodnota) ( ​​var suma = hodnota * toto; return document.write(sum + "
"); ) arr.forEach(foo, 5); //druhý argument bude předán jako hodnota tohoto //příkladu se třemi parametry var a = ; a.forEach(function(el, idx, a) ( dokument .write( "a["+idx+"] = "+el+" v ["+a+"]
"); )); Zkuste »

filtr

Syntaxe metody:

Název_pole.filter(zpětné volání, tentoObjekt)

Metoda filter() vytvoří a vrátí nové pole, které bude obsahovat pouze ty prvky pole, pro které funkce zpětného volání vrátí hodnotu true.

Funkce isBig(prvek, index, pole) ( //vrátí čísla, která jsou větší nebo rovna 10 vrátí (prvek >= 10); //pokud je hodnota prvku větší nebo rovna 10, výraz vrátí true ) var filter = .filter(isBig) ; //filtrovaný

mapa

Metoda map() vytvoří a vrátí nové pole, které se bude skládat z výsledků volání funkce callback(item, idx, ar) pro každý prvek pole.

Var a = ; var b = a.map(funkce(položka, idx, arr) ( vrátit položku * položku; )); // b =

každý a někteří

Metoda every() vrátí hodnotu true, pokud pro všechny prvky pole zadaná funkce použitá k jejich kontrole vrátí hodnotu true.

Metoda some() vrátí hodnotu true, pokud jeden nebo více prvků během testování v zadané funkci vrátí hodnotu true.

Var a = ; a.every(function(x) ( return x 10; )) //true: jedno číslo > 10

snížit a snížitVpravo

Syntaxe metody:

název_pole.reduce(zpětné volání, počátečníHodnota) název_pole.redukovatRight(zpětné volání, počátečníHodnota)

Metoda reduction() aplikuje zadanou funkci zpětného volání na dvě hodnoty v poli najednou, přičemž prochází prvky zleva doprava, přičemž ukládá mezivýsledek.

argumenty funkce zpětného volání: (předchozíHodnota, aktuálníPoložka, index, pole)

  • previousValue – vrácený výsledek funkce zpětného volání (známý také jako mezivýsledek)
  • currentItem - aktuální prvek pole (prvky jsou seřazeny v pořadí zleva doprava)
  • index - index aktuálního prvku
  • pole - zpracované pole

initialValue je objekt použitý jako první argument prvního volání funkce zpětného volání. Jednoduše řečeno, hodnota previousValue při prvním volání je rovna initialValue. Pokud neexistuje žádná initialValue, pak se rovná prvnímu prvku pole a hledání začíná od druhého:

Var a = ; function foo(prevNum,curNum) ( sum = prevNum + curNum; alert(sum); return sum; ) var result = a.reduce(foo, 0); dokument.zapis(vysledek);

Zkuste »

  • Podívejme se, jak tento příklad funguje. První argumenty funkce foo jsou:
  • prevNum = 0 (protože initialValue je 0)

1 se přičte k číslu 0. Tento výsledek (součet: 1) bude předán jako prevNum při příštím spuštění funkce. A tak dále, dokud nedosáhne posledního prvku. Vrácený výsledek, součet z posledního běhu, bude 15 (1+2+3+4+5).

Metoda reductionRight funguje podobně jako metoda snížení, ale prochází polem zprava doleva:

Var a = ["h","o","m","e"]; function bar(prevStr, curItem) ( return prevStr + curItem; ) document.write(a.reduceRight(bar)); //emoh

Hezký den všem. Alexey Gulynin je v kontaktu. V minulém článku jsme se podívali na konstrukci switch case v javascriptu. V tomto článku bych vám rád řekl, co jsou pole v Javascriptu. Pojem pole hraje důležitou roli nejen v Javascriptu, ale ve veškerém programování. Proměnná, jako je pole, neobsahuje jeden prvek, ale několik. Syntaxe pro vytvoření pole je následující:

Var mas = new Array(hodnota1, hodnota2,..., hodnotaN);

V tomto případě se vytvoří proměnná pole mas s hodnotami uvedenými v závorkách. Upozorňujeme, že pole je vytvořeno pomocí klíčového slova new. K prvkům pole můžete přistupovat zadáním názvu pole a indexu pole v hranatých závorkách. Index pole je nastaven od nuly. Uveďme příklad pole sestávajícího ze 4 prvků a zobrazme 2. prvek:

var mas = new Array("privet", 1, 10, 5); document.write("Druhý prvek pole = "+mas); // zobrazí se číslo 10

Pokud vložíme mas , vytiskne se "privet", protože indexování pole začíná od nuly. Pojďme nyní zjistit, jak zobrazit všechny prvky pole. Chcete-li to provést, musíte použít smyčku. Kromě znalosti smyček v Javascriptu potřebujete znát vlastnost length polí, která vrací počet prvků pole (nebo jinými slovy jeho délku). Vytiskneme délku pole mas:

var mas = new Array("privet", 1, 10, 5); document.write("Délka pole = "+mas.délka); // zobrazí se číslo 4

Tisk všech prvků pole:

var mas = new Array("privet", 1, 10, 5); var i; pro (i = 0; i< mas.length; i++) document.write(mas[i]+" ");

Zatím jsme se dívali na jednorozměrná pole. Obecně mohou být pole vícerozměrná. Hlavní věc, kterou musíte pochopit, je, že například dvourozměrné pole je pole, jehož prvky jsou pole. Podívejme se na tento problém: musíte vytvořit dvourozměrné pole 3 x 3, jehož prvky určí uživatel, a toto pole vytisknout. Zde použijeme operátor prompt k vyžádání čísla od uživatele:

var mas = new Array(); //deklarujeme pole const n = 3; //deklaruji konstantu, tzn. Naše pole má velikost 3 x 3 //pro definování dvourozměrného pole musíte použít dvojitou smyčku var i; var j; pro (i = 0; i< n; i++) { mas[i] = new Array();//Здесь мы как раз каждый элемент массива делаем массивом for (j = 0; j < n; j++) { mas[i][j] = prompt("[" + i +","+j+"]= " ,"..."); //запрашиваем число у пользователя } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { document.write("[" + i +","+j+"]= "+ mas[i][j]);} //выводим элемент массива document.write("
"); // přechod na nový řádek po každém vyplněném řádku pole)

V našem případě dvourozměrnému poli odpovídá (například) tato struktura: mas=[,,] . Můžete vidět, že pole má 3 prvky, z nichž každý je pole samo.

Zpočátku bylo úkolem Javascriptu vytvářet dynamické webové stránky. Ve své praxi jsem nikdy nepoužíval dvourozměrná pole, pouze jednorozměrná, takže znalosti o polích, které jste získali z tohoto článku, budou zcela dostačující. V jednom z následujících článků budu hovořit o objektu Array, jeho vlastnostech a metodách.

Pojďme se naučit indexovat pole v js, odstraňovat a přidávat jejich prvky.

Pole v JavaScriptu je globální objekt určený k ukládání seznamu hodnot.

Je podobný ostatním proměnným v tom, že může ukládat jakýkoli typ dat. Pole má ale jeden důležitý rozdíl od proměnné: může uložit více než jeden prvek najednou.

Pole je uspořádaná kolekce hodnot. Každá hodnota se nazývá prvek a má své vlastní číslo, které se nazývá index.

Prvek uvnitř pole může být libovolného typu. Kromě toho mohou být prvky jednoho pole různých typů: čísla, řetězce, logické prvky a dokonce i objekty nebo jiná pole.

Pořadí prvků pole začíná od 0. Ukazuje se, že pole bude mít index vždy posunutý o jednu: první prvek bude mít index 0, druhý 1 atd.

Zde je příklad pole s prvky různých typů:

Vytvoření (deklarace) pole

Pole jsou velmi pohodlná, protože mohou uložit tolik dat, kolik potřebujete. Maximální možná velikost pole js je 2 32 prvků.

Musíme JavaScriptu říci, že chceme vytvořit pole. Existují dvě možnosti: hodnota v hranatých závorkách nebo nové klíčové slovo.

Krátký zápis: pomocí hranatých závorek

Čárkami oddělený seznam hodnot uzavřený v hranatých závorkách.

var myArray = [ "Jack", "Sawyer", "John", "Desmond" ];

Obsah pole je určen tím, co je mezi hranatými závorkami. Každá hodnota je oddělena čárkou.

Hodnoty se zadávají stejným způsobem jako jednoduché proměnné, to znamená, že řetězce musí být deklarovány v uvozovkách atd.

Chcete-li deklarovat prázdné pole, nechte závorky prázdné:

var myArray = ;

Dlouhý záznam: pomocí konstruktoru Array().

var lostArray = new Array("Jack", "Sawyer", "John", "Desmond"); var twinPeaksArray = new Array("Laura", 2, ["Bob", "Leland", "Dale"]);

Nové klíčové slovo říká JavaScriptu, aby vytvořil nové pole, jehož hodnoty jsou předány jako parametry.

Pokud předem víte, kolik prvků bude ve vašem poli, můžete tuto hodnotu okamžitě předat v konstruktoru.

var myArray = new Array(80);

Výše uvedený výraz vytvoří prázdné pole skládající se z 80 slotů s nedefinovanými hodnotami.

Deklarace prázdného pole:

var myArray = new Array();

Přístup k prvkům pole

Pomocí indexu každého prvku můžete pracovat s libovolnými daty v poli a přistupovat k nim pomocí operátoru:

var myArray = ["Jack", "Sawyer", "John", "Desmond"]; console.log(myArray); // Vytiskne “Jack” console.log(myArray); // Vytiskne „Desmond“

Pole může mít několik úrovní, to znamená, že každý prvek může být sám polem. Výsledkem bude dvourozměrné pole js. Jak můžeme přistupovat k těmto polím, která se nacházejí uvnitř jiných – „multidimenzionálních polí“?

Jako příklad uvažujme pole představující rodinu. Děti z této rodiny jsou zaznamenány v samostatném poli uvnitř hlavního:

var familyArray = ["Marge", "Homer", ["Bart", "Lisa", "Maggie"]];

Můžete si to představit takto:

Chcete-li odkazovat na hodnotu "Lisa":

var lisa = familyArray; console.log(lisa); // zobrazí "Lisa"

Takto lze pokračovat téměř donekonečna, což umožňuje ukládat vnořené datové sady do polí a přistupovat k nim pomocí indexů.

Přidání prvků do pole

Přišli jsme na to, jak přistupovat k prvkům pole pomocí jejich odpovídajících indexů. Podobným způsobem můžete přidat (nebo změnit) prvky deklarováním, například:

var myArray = ["Kate", "Sun"]; myArray = "Julie"; console.log(myArray); // Tiskne "Kate, Sun, Juliet"

Co se stane, když deklaruji prvek s indexem, který před sebou nemá žádné další prvky? Samotné pole vytvoří všechny chybějící prvky a přiřadí jim hodnotu undefined :

var myArray = ["Kate", "Sun"]; myArray = "Julie"; console.log(myArray.length); // Vytiskne "6" console.log(myArray); // Tiskne ["Kate", "Sung", undefined, undefined, undefined, "Juliet"]

Můžete zjistit, jaká je délka pole js pomocí vlastnosti length. Ve výše uvedeném příkladu je v poli šest prvků a třem z nich nebyla přiřazena hodnota – jsou označeny jako nedefinované .

metoda push().

Pomocí metody push() můžete přidat jeden nebo více prvků do pole js. Push() přijímá neomezený počet parametrů, z nichž všechny budou přidány na konec pole.

var myArray = ["Kate", "Sut"]; myArray.push("Julie"); // Přidá prvek "Juliet" na konec pole myArray.push("Libby", "Shannon" // Přidá prvky "Libby" a "Shannon" na konec pole console.log(myaArray); ); // Tiskne ["Kate", "Brzy", "Juliet", "Libby", "Shannon"]

metoda unshift().

Metoda unshift() funguje stejně jako push(), kromě toho, že přidává prvky na začátek pole.

var myArray = ["Kate", "Sun"]; myArray.unshift("Julie"); // Přidá prvek "Juliet" na začátek pole myArray.unshift("Libby", "Shannon"); // Přidá prvky "Libby" a "Shannon" na začátek pole console.log(myArray); // Výstupy ["Libby", "Shannon", "Juliet", "Kate", "Brzy"]

Odstranění prvků pole Metody Pop() a shift().

Metody pop() a shift() odstraňují poslední a první prvek pole:

var myArray = ["Jack", "Sawyer", "John", "Desmond", "Kate"]; myArray.pop(); // Odebere prvek "Kate" myArray.shift(); // Odebere prvek "Jack" console.log(myArray); // Tiskne ["Sawyer", "John", "Desmond"]

metoda splice().

Pomocí metody splice() můžete odebrat nebo přidat prvky do pole a přitom přesně určit index prvků.

Následující příklad používá metodu splice() k přidání dvou prvků počínaje indexem 2 (tj. třetím prvkem):

var fruitArray = ["jablko", "broskev", "pomeranč", "citron", "limetka", "třešeň"]; fruitArray.splice(2, 0, "meloun", "banana"); console.log(fruitArray); // Výstupy ["jablko", "broskev", "meloun", "banán", "pomeranč", "citrón", "limetka", "třešeň"]

Prvním parametrem metody splice() je index. Označuje, na jaké pozici mají být prvky přidány/odebrány. V našem příkladu jsme zvolili index 2 (s hodnotou „oranžová“).

Druhým parametrem je počet prvků, které je potřeba odstranit. Zadali jsme hodnotu 0, takže se nic nesmaže.

Následující parametry jsou volitelné. Přidávají do pole nové hodnoty. V našem případě musíme přidat „meloun“ a „banán“, počínaje indexem 2.

V tomto článku se podíváme na pole JavaScript a jeho součásti. JavaScript je ideální pro programování. Ve skutečnosti implementuje jazyk ECMAScript (standard ECMA-262).

Kde se používá JavaScript? Používá se jako vestavěný jazyk k definování cesty programu k předmětu aplikace. Lze jej nalézt v prohlížečích, kde se používá jako skriptovací jazyk, díky kterému jsou webové stránky interaktivní.

Nejdůležitějšími architektonickými vlastnostmi tohoto produktu jsou dynamické a slabé psaní, automatická správa paměti, dokonalé programování a prvotřídní objektové funkce.

JavaScript byl obecně ovlivněn různými důvody, protože během vývoje chtěli vytvořit jazyk podobný Javě, ale programátorům snadno použitelný. Mimochodem, jazyk JavaScript nevlastní žádná společnost ani organizace, čímž se liší od řady programovacích stylů používaných webovými vývojáři.

Je třeba poznamenat, že JavaScript je registrovaná ochranná známka společnosti Oracle Corporation.

Co je pole?

Pole je takové, které ukládá očíslované hodnoty. Každá taková hodnota se nazývá komponenta pole a číslice, ke které je komponenta přidružena, se nazývá index. Pole JavaScriptu je nezadané. To znamená, že části pole mohou být libovolného typu a různé části patřící do stejného pole mají zcela odlišné typy.

Pole JavaScriptu je navíc dynamické, což znamená, že není potřeba deklarovat pevnou velikost. Koneckonců, můžete kdykoli přidat nové podrobnosti.

Výroba pole

Pomocí JavaScriptu není vytvoření pole vůbec obtížné. Jsou na to dvě metody. První zahrnuje vytvoření pole pomocí literálu - hranaté závorky, uvnitř kterých je seznam částí oddělených čárkami.

  • var prázdný = ; //prázdné pole;
  • var čísla = ; //pole s pěti digitálními součástkami;
  • var diff = ; //pole se třemi prvky různých typů.

Hodnoty zde obvykle nemusí být jednoduché (řetězce a čísla). Mohou to být také jakékoli jiné výrazy, například předmětové literály, jiné funkce a pole.

Druhý způsob, jak vytvořit pole, je zavolat Array() designer. Pozvat ho můžete třemi způsoby:

  • Volání návrháře bez argumentů: var b - new Array(). To zajišťuje vytvoření prázdného pole, ekvivalentního prázdnému literálu.
  • Konstruktor explicitně specifikuje hodnotu n komponent pole: var b = new Array (1, 3, 5, 8, “string”, true). V tomto případě je návrháři předložen seznam argumentů, které jsou převedeny na součásti nového pole. Argumenty se zapisují do pole v místě, kde jsou specifikovány.
  • Vymezení oblasti pro následné přiřazení hodnot. To se provádí zadáním při identifikaci pole jedno číslo uzavřené v závorkách: var b = new Array(5). Tato metoda identifikace spočívá v přidělení požadovaného počtu komponent do pole (každá z nich je uvedena jako nedefinovaná) s možností následného přiřazení hodnot během procesu prezentace. Tento formulář se obvykle používá k předběžnému přidělení pole Javascript, jehož délka je předem známa.
Zápis, čtení a přidávání detailů pole

Ke komponentám pole můžete přistupovat pomocí operátoru. Mimochodem, všechny komponenty v JavaScriptu, počínaje nulou, jsou očíslovány. Pro získání požadovaného prvku je jeho číslo uvedeno v Podrobnosti lze zpravidla změnit. A abyste mohli do pole přidat JavaScript, stačí přiřadit novou hodnotu.

Je třeba poznamenat, že pole JavaScriptu mohou ukládat libovolný počet prvků jakéhokoli druhu.

Délka pole

Víme tedy, že délka pole je obecně zajímavý fenomén. Pojďme se na to podívat blíže. Všechna pole, ať už vytvořená pomocí návrháře Array() nebo odhalená prostřednictvím literálu pole, mají specifickou vlastnost length, která udává celkový počet uložených prvků. Protože pole může obsahovat nedefinované části (označené jako undefined), přesnější vyjádření je: kvalita délky je vždy o jednu větší než největší číslo (index) komponenty pole. Kvalita délky se upravuje automaticky a zůstává přesná, když se v poli objeví nové díly.

Chcete-li, aby se objevila konečná složka pole, můžete použít vlastnost length.

Poslední část má index o jednu menší, než je velikost pole. Odpočítávání totiž vždy začíná od nuly. Ach, ten JavaScript! Délka pole závisí na přesném počtu prvků. Pokud tedy nevíte, kolik by jich mělo být, ale potřebujete získat přístup ke konečnému prvku pole, musíte použít zápis: v.length - 1.

Iterování přes podrobnosti pole

Velmi často se vlastnost length používá k iteraci přes detaily pole ve smyčce:

  • var ovoce = [“jahoda”, “broskev”, “jablko”, “banán”];
  • for(var I = 0; i< fruits.lenght; i++);
  • document.write(ovoce[i] + "...").

V tomto příkladu se komponenty zdají být umístěny souvisle a začínají s první částí, která má index nula. Pokud tomu tak není, musíte před voláním každého prvku pole zkontrolovat, zda je definován.

Smyčka se také někdy používá k inicializaci komponent.

Pěstujte a zkracujte pole

Zajímalo by mě, jak přidat řetězec do pole pomocí JavaScriptu? Jak pracujeme s poli, kvalita délky se automaticky zlepšuje, proto se o ni musíme postarat sami. Je potřeba si zapamatovat jeden detail – vlastnost length je nejen čitelná, ale i zapisovatelná. Pokud je kvalitě délky přiřazena hodnota, která je menší než aktuální, pole se zmenší na zadanou velikost. Všechny komponenty, které nejsou v novém rozsahu indexů, jsou vyřazeny a jejich hodnoty jsou ztraceny, i když je později vrácena délka – hodnoty se neobnoví.

Je docela snadné vymazat pole takto: foo.length = 0.

Pokud je kvalita délky větší než její aktuální hodnota, objeví se na konci pole nové neidentifikované části, které jej zvětší na požadovanou velikost.

Odstranění částí vzoru

Operátor delete určuje nedefinovanou hodnotu v komponentě pole, ale ta nadále existuje. Pokud potřebujete odstranit prvek pole JavaScript, aby se zbývající části přesunuly do volného prostoru, musíte použít jednu z poskytnutých metod pole. Metoda Array.shift() eliminuje první komponentu, pop() eliminuje finální komponentu a metoda splice() eliminuje jednu nebo řadu komponent kdekoli v poli.

Vícerozměrná pole

Zdá se, že jsme na to trochu přišli. Dvourozměrná pole jsou tím, co musíme dále zvážit. Pamatujete si, že pole JavaScriptu mohou obsahovat další prvky jako komponenty? Tato funkce se používá k vytváření vícerozměrných polí. Chcete-li navštívit komponenty v řadě polí, jednoduše použijte hranaté závorky dvakrát.

Asociativní pole

Nyní se podívejme, jak ochranná známka JavaScript používá asociativní pole. K tomu se musíme podívat do teorie: asociativní pole se někdy nazývají hashovací tabulky. Díky nim se místo indexů používají řetězce. Použití takových konstrukcí připomíná použití názvu vlastnosti jednoduchého objektu, ale v této verzi při provádění práce ve formátu pole. Protože JavaScript postrádá způsoby, jak pracovat s asociativními poli, používají se mnohem méně často než běžná pole. Je třeba poznamenat, že mohou být stále užitečné pro ukládání dat a usnadňují zapamatování podrobností, ke kterým je třeba přistupovat.

Výstup pole

Co se nyní o JavaScriptu dozvíme? Zobrazení pole v dialogovém okně (na obrazovce monitoru) a také zobrazení hodnot komponent pole.

Pokud potřebujete zobrazit hodnoty všech komponent v programu, je vhodné použít příkaz for. Zajímavé je, že proměnná čítače pravidel for se používá jako index komponenty pole.

Čištění

Chcete-li filtrovat pole JavaScriptu, musíte resetovat jeho délku na nulu:

  • var myArray = ;
  • myArray.length = 0.
  • clear: function() (;
  • this.length = 0;
  • vrátit toto;
Přidávání a odebírání komponent

Pokračujme ve studiu tohoto zajímavého jazyka JavaScript. Prvek pole lze odstranit nebo přidat stejným způsobem jako běžné vlastnosti jiných objektů. Existují však určité rozdíly: přidáním číselných vlastností lze změnit kvalitu délky a úpravou vlastnosti délky lze číselné kvality odstranit. V zásadě je algoritmus pro nastavení kvalit pro pole následující:

  • Při přidávání neznámé digitální vlastnosti i, pokud je délka rovna nebo menší než i, je délka definována jako i+1.
  • Když se změní kvalita délky, provedou se následující akce: pokud je přiřazená hodnota menší než nula, je vyvolána chyba RangeError. Všechny číselné kvality a indexy, které se rovnají nové délce a které jsou větší, jsou odstraněny.

Obecně platí, že odstranění prvku pole JavaScript není obtížné. Koneckonců, i při nastavování délky z něj musíte odstranit „extra“ komponenty. To vede k možnosti vymazání pole. Pokud přiřazená proměnná prázdného nového pole z nějakého důvodu nevyhovuje a je nutné přenastavit tu aktuální, stačí její kvalitě délky přiřadit hodnotu nula.

metody unshift, shift, pop a push

Přestože se komponenty pole upravují ručně, mnoho lidí k tomu doporučuje používat vestavěné metody. Je to tato nuance, která zaručuje správnou hodnotu kvality délky a absenci mezer v poli. Mimochodem, správná kvalita délky bude odpovídat počtu komponentů.

Metoda push přesune předané části na konec pole. Metoda pop vrátí koncovou komponentu a odstraní ji.

Obecně platí, že v Internet Exploreru mladším než osmá verze může unshift v jiných prohlížečích vracet nedefinovanou hodnotu délky. Je tedy lepší nespoléhat se na hodnotu vrácenou z nesměny.

Přidávání a odstraňování částí uprostřed pole

Pokud potřebuji odstranit pole JavaScriptu, co mám dělat? Je známo, že metoda spojování má podpis Array.prototype.splice.

Odebere komponenty deleteCount z pole, počínaje indikátorem start. Pokud jsou předány více než dva argumenty, pak všechny následující argumenty v poli jsou umístěny místo eliminovaných. Je-li začátek záporný, pak index, od kterého bude výběr pokračovat, bude roven délce + začátku. Pole je vráceno z odstraněných prvků.

Ve skutečnosti můžete pomocí metody splice odebrat komponenty ze středu pole nebo přidat libovolný počet komponent kdekoli v poli.

V nejjednodušší verzi, pokud potřebujete odstranit komponentu s indexem i, musíte požádat o metodu spojení z pole s parametry i a 1.

V zásadě je druhý parametr metody splice volitelný, ale chování funkce s jedním argumentem je v každém prohlížeči jiné.

Například ve Firefoxu, v nejnovějších variantách Opery, v Safari a v Chrome budou odstraněny všechny detaily až do konce pole.

Žádná komponenta nebude v IE odstraněna. V prvních variantách Opery nelze předvídat chování - jedna část se startem indexu - 1 bude odstraněna, proto je vždy potřeba předat této metodě alespoň dvě komponenty.

Klíče

Samozřejmě, když se učíte JavaScript, měli byste mít na paměti také asociativní pole, jak již bylo zmíněno dříve. Jedná se o abstraktní typ informace (rozhraní k datovému úložišti), který umožňuje ukládat páry ve tvaru „(klíč, hodnota)“ a podporovat operace přidání páru, stejně jako mazání a vyhledávání páru. podle klíče:

NAJÍT (klávesa).

INSERT (hodnota, klíč).

ODSTRANIT (klávesa).

Předpokládá se, že dva páry s podobnými klíči nelze uložit do asociativního pole. V páru k + v se v nazývá hodnota spojená s klíčem k. Sémantika a názvy výše uvedených operací se mohou v různých implementacích takových polí lišit.

Akce FIND (key) tedy vrací hodnotu přidruženou k danému klíči nebo nějaký konkrétní objekt UNDEF indikující, že k danému klíči není přiřazena žádná hodnota. Další dvě akce nevrací nic (kromě toho, zda byla operace úspěšná).

Obecně je z hlediska rozhraní vhodné považovat asociativní pole za jednoduché pole, ve kterém lze jako indexy použít nejen celá čísla, ale také hodnoty jiných typů - například řetězce.

Mimochodem, podpora pro taková pole je dostupná v mnoha programovacích jazycích na vysoké úrovni, jako je PHP, Perl, Ruby, Python, Tcl, JavaScript a další. Pro jazyky, které nemají vestavěné nástroje pro práci s asociativními poli, bylo vytvořeno kolosální množství implementací ve formě knihoven.

Příkladem asociativního pole je telefonní seznam. V této verzi má význam komplex „F. I. O. + adresa“ a klíčem je telefonní číslo. Jedno telefonní číslo má jednoho vlastníka, ale jedna osoba může vlastnit několik čísel.

Asociativní rozšíření

Je třeba poznamenat, že mezi nejznámější rozšíření patří následující:

  • KAŽDÝ - „projít“ všechny uložené páry.
  • CLEAR - odstranění všech záznamů.
  • MIN - najděte pár s nejmenší hodnotou klíče.
  • MAX - najděte pár s největší hodnotou klíče.

Poslední dvě možnosti vyžadují, aby klávesy označovaly akci porovnání.

Implementace asociativních polí

Existuje mnoho různých implementací asociativního pole. Nejběžnější implementace může být založena na jednoduchém poli, jehož komponenty jsou páry (hodnota, klíč). Chcete-li urychlit vyhledávací operace, můžete seřadit komponenty daného pole podle klíče a provést vyhledávání pomocí Ale tím se prodlouží doba potřebná k přidání nového páru, protože bude nutné „oddělit“ komponenty pole, aby se nový záznam zabalil do prázdné buňky, která se objeví.

Nejznámější implementace jsou ty, které jsou založeny na různých vyhledávacích stromech. Například v typické čtečce C++ STL je mapový kontejner implementován na základě černého mahagonového stromu. Styly Ruby, Tcl, Python používají jeden typ hashovací tabulky. Existují další implementace.

Obecně platí, že každá implementace má své nevýhody a výhody. Je důležité, aby všechny tři akce byly provedeny jak v průměru, tak v nejhorších nuancích po dobu O(log n), kde n je aktuální počet ukládaných párů. U odpovídajících vyhledávacích stromů (včetně černo-červených stromů) je tato podmínka splněna.

Je známo, že implementace založené na hashovacích tabulkách mají průměrnou dobu O(1), což je lepší než implementace založené na vyhledávacích stromech. To samozřejmě nezaručuje rychlé provádění jednotlivých operací: nejhorší případ provedení INSERT je označen jako O(n). Proces INSERT běží dlouhou dobu, když faktor plnění dosáhne svého nejvyššího bodu a index hashovací tabulky je třeba rekonstruovat.

Mimochodem, tyto hash listy jsou špatné, protože na jejich základě nelze provádět rychlé dodatečné akce MAX, MIN a algoritmus pro procházení všech uložených párů v sestupném nebo vzestupném pořadí klíčů.




Nahoru