Indexy prvků pole v javascriptu začínají na. Převést na skutečné pole. Jaký je účel operátora mazání?

Pole jsou jedním z nejčastěji používaných typů proměnných, které vám umožňují uložit mnoho sekvenčních hodnot na „jedno místo“. Pokud však jde o JavaScript, je zde prostor pro zlepšení.

V tomto článku se podíváme na tři málo známé techniky, které lze použít při práci s poli.

1. Přidání uživatelských vlastností do polí

Pokud k nalezení definice pole v JavaScriptu použijete vyhledávání, většina zdrojů to uvede tento typ Hodnota proměnné je reprezentována jako objekt.

Obecně řečeno, mnoho věcí, se kterými se v JavaScriptu setkáváme, jsou objekty. Bylo by spravedlivé poznamenat, že jazyk také obsahuje „primitivní“ datové typy, ale jejich hodnoty se nějak používají ve vlastnostech uvnitř objektů.

2. Přístup k prvkům pole v rámci smyčky

Protože indexy pole mohou nabývat pouze kladných hodnot, počítání začíná od nuly. Tento index můžeme později použít k přístupu k prvku pole v dané iteraci smyčky.

ECMAScript6 zavedl způsob, jak procházet polem bez použití indexů, ale pomocí nové smyčky for...of.

Smyčka for...of je navržena tak, aby procházela prvky pole bez ovlivnění indexu prvku.

Var ary = ["pomeranč","jablko","liči"]; for (let item of ary)( console.log(item); ) // "oranžová", "jablko", "liči" Pro srovnání: výstup indexů položek ve smyčce for. var ary = ["pomeranč","jablko","liči"]; for (var item = 0; item< ary.length; item++){ console.log(item); } // 0, 1, 2

3. Počet prvků není rozměr pole

Když mluvíme o velikosti pole, obvykle si to představujeme jako počet prvků v něm uložených. Ve skutečnosti to není tak úplně pravda – vlastnost length se počítá v závislosti na maximální indexživel.

Vlastnost délky je velmi nejednoznačná. Chcete-li to ověřit, podívejte se na následující manipulace:

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6

V posledním příkladu stačilo umístit prvek na pátou pozici, čímž se délka pole stala 6. Pokud si myslíte, že indexy od 0 do 4 se budou vytvářet automaticky, jste na omylu. To lze zkontrolovat pomocí operátoru in.

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 console.log(0 in ary); // nepravda

V v tomto případě Je spravedlivé nazývat pole ary "řídké".

Můžeme také manipulovat s vlastností length, abychom ořízli pole. Níže uvedený příklad ukazuje „ztrátu“ prvku na indexu 5 snížením vlastnosti length pole ary.

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 ary.length = 2; console.log(ary.length); // 2 console.log(ary); // nedefinováno

Popsal jsem pouze některé metody pro práci s poli.

Zde budeme hovořit o přidávání a odebírání prvků pole. O překlápění a řazení pole, stejně jako o krájení, nahrazování a kombinování polí.

Přidání prvků do pole.

Pomocí vlastnosti length můžete do pole přidat nové prvky:

Var myArray = ["Apple", "Microsoft", "Google", "Facebook"]; myArray = "Yahoo!"; console.log(myArray); // ["Apple", "Microsoft", "Google", "Facebook", "Yahoo!"]

Bude to fungovat, protože... prvky pole jsou číslovány od nuly a délka je o jednu více. Délka je vždy ekvivalentní indexu + 1 , takže je velmi snadné ji přidat nový prvek na konec pole. Kupodivu můžete přidat prvek na pozici, která je mnohem větší než délka samotného pole:

Var myArray = ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards"]; myArray = "Lindsey Buckingham"; console.log(myArray); // ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards", nedefinováno × 95, "Lindsey Buckingham"] console.log(myArray.length); // 100

Jak je uvedeno v komentářích, přidá se 95 prázdných slotů a prvek „Lindsey Buckingham“ na konec pole. Poté dostaneme délku 100. Dalším způsobem, jak přidat nový prvek do pole, je použít metodu push():

Var myArray = ["Paul McCartney", "John Lennon", "George Harrison"]; myArray.push("Ringo Starr", "George Martin"); console.log(myArray); // ["Paul McCartney", "John Lennon", "George Harrison", "Ringo Starr", "George Martin"]

Metoda push() vždy vrací novou délku pole (v našem případě 5). Prvek můžete přidat pomocí splice():

Var myArray = ["žalud", "buk", "mongongo", "makadamie"]; myArray.splice(2, 0, "kešu"); // přidá "kešu" do indexu 2 console.log(myArray); // ["žalud", "buk", "kešu", "mongongo", "makadamie"]

Když je druhý argument 0, znamená to, že nebude odstraněn žádný prvek, a proto budou všechny následující argumenty přidány do pole na pozici zadanou v prvním argumentu.

Odstranění prvků z pole

Odebrání prvku je o něco obtížnější než jeho přidání. Chcete-li odstranit prvek z konce pole, můžete použít pop():

Var myArray = ["7-up", "Sprite", "Ginger Ale", "Limonade"]; myArray.pop(); console.log(myArray); // ["7-up", "Sprite", "Ginger Ale"]

Metoda pop() vždy odstraní poslední prvek v poli a vrátí jej.

Můžete také použít metodu splice():

Var myArray = ["maniok", "muškátový oříšek", "lupin", "rebarbora"]; myArray.splice(2, 1); // odstranění prvku s indexem 2 console.log(myArray); // ["maniok", "muškátový oříšek", "rebarbora"]

Na rozdíl od metody splice(), která se používá k přidávání prvků, je zde druhý argument 1, který říká, že chceme odstranit prvek na indexu 2 (nebo 3. v řadě). V tomto případě byl odstraněn prvek "lupina".

Prvek pole můžete odstranit pomocí operátoru delete:

Var myArray = ["Byte Bandit", "Eliza", "Jeefo", "Michelangelo"]; console.log(myArray.length); // 4 delete myArray; // smazat Eliza console.log(myArray.length); // 4 console.log(myArray); // ["Byte Bandit", undefined × 1, "Jeefo", "Michelangelo"]

První důležitá poznámka: delete() nemění délku pole po smazání prvku (i když to byl poslední prvek v poli). Za druhé: delete() změní hodnotu odstraňovaného prvku na undefined, takže když se zavolá myArray = undefined .

Dobrým způsobem, jak odstranit prvek z pole, je použít Array.remove od Johna Resiga. Níže je příklad použití převzatý z jeho stránky:

// Odebrat pole – od Johna Resiga (licence MIT) Array.prototype.remove = function(from, to) ( var rest = this.slice((to || from) + 1 || this.length); this.length = od< 0 ? this.length + from: from; return this.push.apply(this, rest); }; // Удаление 2 элемента из массива array.remove(1); // Удаление 2-ого элемента с конца массива array.remove(-2); // Удаление второго и третьего элемента array.remove(1,2); // Удаление последнего и предposlední prvek array.remove(-2,-1);

Možná se budete chtít podívat na řešení Viral Patel, jednu z funkcí v Underscore.js nebo grep() jQuery.

JavaScript má navíc metodu shift(), která odstraní první prvek v poli a vrátí jeho hodnotu. Podívejme se na kód:

Var myArray = ["Matt Kramer", "Jason Bieler", "Tom Defile", "Phil Varone"]; console.log(myArray.length); // 4 var firstItem = myArray.shift(); console.log(firstItem); // Matt Kramer console.log(myArray.length); // 3 console.log(myArray); // ["Jason Bieler", "Tom Defile", "Phil Varone"]

Pomocí metody shift() jsme prvek odstranili, ale jeho hodnotu uložili do naší proměnné firstItem. Délka pole se změnila ze 4 na 3.

Tato metoda může být užitečná ve spojení s metodou push().

Jejich společným použitím můžeme efektivně zařadit prvky do pole. Délku pole zachováme odebráním prvku ze začátku a přidáním nového na konec.

A naopak, můžeme použít metodu unshift() k přidání prvku na začátek pole:

Var myArray = ["apito", "kastaněty", "maraca"]; console.log(myArray.length); // 3 myArray.unshift("chime bar", "tan-tan"); console.log(myArray.length); // 5 console.log(myArray); // ["chime bar", "tan-tan", "apito", "castanets", "maraca"] Pomocí metody unshift() s metodou pop() můžete vytvářet fronty v zadní strana

, přidání prvků na začátek a odebrání z konce pole.

Obrácení a řazení prvků pole.

K obrácení prvků v poli můžeme použít reverse():

Var myArray = ["odpočítávání", "konečné", "the"]; console.log(myArray); // ["odpočítávání", "konečné", "the"] myArray = myArray.reverse(); console.log(myArray); // ["the", "final", "countdown"]

Pomocí metody sort() je možné seřadit prvky pole v abecedním pořadí:

Var myArray = ["xylofony", "zebry", "juggernauti", "avokádo"]; console.log(myArray); // ["xylofony", "zebry", "juggernauti", "avokáda"] myArray = myArray.sort(); console.log(myArray); // ["avokádo", "juggernauts", "xylofony", "zebry"]

Ale s čísly to nebude fungovat.

Var myArray = ; console.log(myArray); // myArray = myArray.sort(); console.log(myArray); //

Pokud potřebujete seřadit čísla, můžete použít následující kód:

Funkce porovnatCísla(a, b) ( return a - b; ) var myArray = ; console.log(myArray); // myArray = myArray.sort(compareNumbers); console.log(myArray); //

Jak je ukázáno výše, s jednoduchou funkcí vloženou do sort() bude pole obsahující čísla seřazeno správně.

Kombinování polí.

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myArray2 = ["Chris Murphy", "Patrick Pentland"]; var myNewArray = myArray.concat(myArray2); console.log(myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myNewArray = myArray.concat("Chris Murphy", "Patrick Pentland"); console.log(myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Rozdělení pole.

Můžeme vytvořit nové pole obsahující 1 nebo více prvků z existujícího pole pomocí funkce slice():

Var myArray = ["zpěv", "basa", "kytara", "bicí", "jablka", "pomeranče"]; var myNewArray = myArray.slice(4); console.log(myNewArray); // ["Jablka", "Pomeranče"]

Metoda slice() má 1 nebo 2 argumenty. Pokud je předán 1 argument (index), vytvoří se nové pole ze všech prvků starého, počínaje od tohoto indexu. Pokud jsou předány 2 argumenty, vytvoří se nové pole z prvků počínaje prvním argumentem a až po prvek s indexem předaným ve druhém parametru, bez posledního. Aby to bylo jasnější, podívejme se na kód níže:

Var myArray = ["zpěv", "basa", "kytara", "bicí", "jablka", "pomeranče"]; var myNewArray = myArray.slice(0, 4); console.log(myNewArray); // ["Zpěv", "Basa", "Kytara", "Drums"]

Nahrazení prvků v poli.

K odstranění prvků z pole používáme splice(), ale můžeme také nahradit prvek v poli novými prvky:

Var myArray = ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myArray.splice(3, 1, "Scott Shriner"); // nahraďte 1 prvek indexem 3 console.log(myArray); // ["Rivers Cuomo", "Patrick Wilson", "Brian Bell", "Scott Shriner"]

Metoda splice() vždy vrací pole obsahující prvky, které byly odstraněny. Řádek 2 vrátí 1 prvek „Brian Bell“.

Závěr

Tyto články popisovaly metody práce s poli v JavaScriptu. Nějaký doplňkové prvky můžete se podívat na MDN, které jsem do tohoto příspěvku nezahrnul. Fungují pouze v IE9+, takže nemusí být užitečné.

Chcete něco dodat? Nebo znáte nějakou zajímavou knihovnu, která pomůže se správou polí? Prosím komentujte!

  • Překlad

Většina aplikací vyvinutých v dnešní době vyžaduje interakci s nějakým druhem datové sady. Manipulace s prvky v kolekcích je běžná operace, se kterou jste se pravděpodobně setkali. Při práci například s poli můžete bez přemýšlení použít běžný cyklus for, který vypadá asi takto: for (var i=0; i< value.length; i++){} . Однако, лучше, всё-таки, смотреть на вещи шире.

Předpokládejme, že potřebujeme zobrazit seznam produktů a v případě potřeby jej rozdělit do kategorií, filtrovat, provést v něm vyhledávání, upravit tento seznam nebo jeho prvky. Možná budete muset rychle provést některé výpočty, které zahrnují prvky seznamu. Řekněme, že potřebujete něco s něčím přidat, něco vynásobit něčím. Je možné v JavaScriptu najít nástroje, které vám umožní řešit takové problémy rychleji a pohodlněji než pomocí běžného pro smyčku ?

Ve skutečnosti taková zařízení v JavaScriptu existují. O některých z nich pojednává materiál, jehož překlad vám dnes předkládáme. Konkrétně mluvíme o operátoru spread, cyklu for...of a metodách include(), some(), every(), filter(), map() a reduction(). Většinou se zde budeme bavit o polích, ale zde diskutované techniky jsou obecně vhodné pro práci s jinými typy objektů.

Nutno podotknout, že recenze moderní přístupy Vývoj JS obvykle zahrnuje příklady připravené pomocí funkcí šipek. Možná je nepoužíváte příliš často – možná proto, že je nemáte rádi, možná proto, že nechcete trávit příliš mnoho času učením se něčemu novému, nebo možná nejsou pro vás to pravé. Proto se zde ve většině situací zobrazí dvě možnosti pro provedení stejných akcí: použití normální funkce(ES5) a pomocí funkcí šipek (ES6). Pro začátečníky v práci s funkcemi šipek nejsou funkce šipek ekvivalentem deklarací funkcí a výrazů funkcí. Neměli byste jeden nahradit druhým. Zejména je to způsobeno tím, že v běžných a šipkových funkcích klíčové slovo tohle se chová jinak.

1. Operátor spread Operátor spread vám umožňuje „rozšiřovat“ pole nahrazením jejich prvků místo polí v místě, kde se tento operátor používá. Podobný přístup byl navržen pro objektové literály.▍Síla operátoru rozšíření
  • Je to jednoduché a rychlý způsob„vytáhnout“ jeho jednotlivé prvky z pole.
  • Tento operátor je vhodný pro práci s maticovými a objektovými literály.
  • Jedná se o rychlou a intuitivní metodu práce s argumenty funkcí.
  • Operátor rozšíření nezabírá v kódu mnoho místa – vypadá jako tři tečky (...).
▍Příklad Řekněme, že stojíte před úkolem zobrazit seznam vašich oblíbených pochoutek bez použití smyčky. Pomocí operátoru rozšíření se to dělá takto:

2. Smyčka for…of Operátor for…of je určen k procházení iterovatelných objektů. Umožňuje přístup k jednotlivé prvky takové objekty (zejména k prvkům pole), což například umožňuje jejich úpravu. Lze jej považovat za náhradu za běžnou smyčku for.▍Síla smyčky for...of
  • Toto je snadný způsob, jak přidat nebo aktualizovat položky sbírky.
  • Smyčka for…of vám umožňuje provádět různé výpočty pomocí prvků (součet, násobení atd.).
  • Je vhodné jej použít, když potřebujete zkontrolovat jakékoli podmínky.
  • Jeho použití vede k psaní čistšího a čitelnějšího kódu.
▍Příklad Řekněme, že máte datovou strukturu, která popisuje obsah sady nástrojů, a chcete tyto nástroje zobrazit. Zde je návod, jak to udělat pomocí cyklu for...of:

3. Metoda include() Metoda include() se používá ke kontrole přítomnosti určitého prvku v kolekci, konkrétně například určitého řetězce v poli obsahujícím řetězce. Tato metoda vrací hodnotu true nebo false v závislosti na výsledcích testu. Při jeho používání stojí za zvážení, že rozlišuje malá a velká písmena. Pokud například kolekce obsahuje element string SCHOOL a include() kontroluje jeho přítomnost na string school, metoda vrátí false .▍Silné stránky metody include()
  • Metoda include() je užitečná při vytváření jednoduchých mechanismů načítání dat.
  • To dává vývojáři intuitivní jasná cesta určení přítomnosti určitých dat v poli.
  • Je vhodné používat v podmíněné výrazy upravovat, filtrovat prvky a provádět další operace.
  • Jeho použití vede ke zlepšení čitelnosti kódu.
▍Příklad Předpokládejme, že máte garáž reprezentovanou polem se seznamem aut a nevíte, zda se v této garáži určité auto nachází nebo ne. Chcete-li tento problém vyřešit, musíte napsat kód, který vám umožní zkontrolovat, zda je auto v garáži. Použijme metodu include():

4. Metoda Some() Metoda some() vám umožňuje zkontrolovat, zda v poli existují některé prvky, které hledáte. Na základě výsledků kontroly vrací true nebo false . Je podobná metodě include() výše, s tím rozdílem, že jejím argumentem je spíše funkce než například běžný řetězec Silné stránky metody some().
  • Metoda some() nám umožňuje zkontrolovat, zda pole obsahuje alespoň jeden z prvků, které nás zajímají.
  • Provede test stavu pomocí funkce, která mu byla předána.
  • Tato metoda je vhodná k použití.
▍Příklad Předpokládejme, že jste vlastníkem klubu a obecně vás nezajímá, kdo přesně do vašeho klubu přichází. Některým návštěvníkům je však vstup do klubu zakázán, protože mají sklony k nadměrné konzumaci alkoholických nápojů, alespoň pokud se ve vaší provozovně ocitnou sami, a není s nimi nikdo, kdo by je hlídal. V tomto případě může do klubu vstoupit skupina návštěvníků pouze v případě, že alespoň jednomu z nich je alespoň 18 let. Pro automatizaci kontroly tento druh, použijeme metodu some(). Níže je jeho aplikace demonstrována ve dvou verzích.ES5

ES6

5. Metoda Every() Metoda every() prochází polem a kontroluje, zda každý prvek vyhovuje určité podmínce, přičemž vrací hodnotu true, pokud všechny prvky pole splňují podmínku, a v opačném případě vrací hodnotu false. Můžete vidět, že je podobná metodě some().▍Síla metody every().
  • Metoda every() umožňuje zkontrolovat, zda všechny prvky pole splňují podmínku.
  • Podmínky lze nastavit pomocí funkcí.
  • Podporuje deklarativní přístup k programování.
▍Příklad Vraťme se k předchozímu příkladu. Tam jste do klubu pouštěli návštěvníky mladší 18 let, ale někdo sepsal prohlášení na policii, po kterém jste se ocitl v nepříjemné situaci. Poté, co bylo vše vyřešeno, jste se rozhodli, že tohle všechno nepotřebujete a zpřísnili jste pravidla pro návštěvu klubu. Nyní může skupina návštěvníků vstoupit do klubu pouze v případě, že každý člen skupiny má alespoň 18 let. Stejně jako minule zvážíme řešení problému ve dvou verzích, ale tentokrát použijeme metodu every().ES5

ES6

6. Metoda filter() Metoda filter() umožňuje vytvořit na základě určitého pole nové pole obsahující pouze ty prvky původního pole, které splňují danou podmínku ▍Síly metody filter().
  • Metoda filter() se vyhýbá úpravám původního pole.
  • Umožňuje vám zbavit se nepotřebných prvků.
  • Zlepšuje čitelnost kódu.
▍Příklad Předpokládejme, že potřebujete vybrat ze seznamu cen pouze ty, které jsou větší nebo rovné 30. K vyřešení tohoto problému použijeme metodu filter() .ES5

ES6

7. Metoda Map() Metoda map() je podobná metodě filter() v tom, že také vrací nové pole. Používá se však k úpravě prvků původního pole.▍Síla metody map().
  • Metoda map() se vyhne nutnosti měnit prvky původního pole.
  • Lze jej použít k pohodlné úpravě prvků pole.
  • Zlepšuje čitelnost kódu.
▍Příklad Řekněme, že máte seznam produktů s cenami. Váš manažer potřebuje nový seznam zboží, jehož ceny jsou sníženy o 25 %. K vyřešení tohoto problému použijeme metodu map() .ES5

ES6

8. Metoda reduction() Metoda reduction() ve své nejjednodušší podobě umožňuje sčítat prvky číselných polí. Jinými slovy redukuje pole na jedinou hodnotu. To vám umožní používat ji k provádění různých výpočtů.▍Síla metody snížit().
  • Pomocí metody reduction() můžete vypočítat součet nebo průměr prvků pole.
  • Tato metoda urychluje a zjednodušuje výpočty.
▍Příklad Předpokládejme, že potřebujete spočítat své výdaje za týden, které jsou uloženy v poli. Vyřešme tento problém pomocí metody reduction() .ES5

ES6

Přidejte značky

Pole

Pole je uspořádaná kolekce hodnot. Hodnoty v poli se nazývají prvky a každý prvek je charakterizován číselnou pozicí v poli, která se nazývá index. Pole v JavaScript jsou bez typu: prvky pole mohou být libovolného typu a různé prvky stejného pole mohou mít různé typy. Prvky pole mohou být dokonce objekty nebo jiná pole, což vám umožní vytvářet složité datové struktury, jako jsou pole objektů a pole polí.

Indexy pole JavaScript začínají na nule a používají 32bitová celá čísla – první prvek pole má index 0. Pole JavaScriptu jsou dynamická: mohou se zvětšovat a zmenšovat podle potřeby; není třeba deklarovat pevné velikosti pole, když jsou vytvořena, nebo k opětovnému přidělení paměti, když se změní jejich velikost.

Pole v JavaScriptu jsou specializovanou formou objektů a indexy polí znamenají o něco víc než jen názvy vlastností, které jsou shodou okolností celá čísla.

Vytváření polí

Nejjednodušší způsob, jak vytvořit pole, je použít literál, což je jednoduchý seznam prvků pole oddělených čárkami v hranaté závorky. Hodnoty v literálu pole nemusí být konstanty – mohou to být libovolné výrazy, včetně objektových literálů:

Var prázdný = ; // Prázdné pole var čísla = ; // Pole s pěti číselnými prvky var misc = [ 1.1, true, "a", ]; // 3 prvky různé typy+ koncová čárka var základ = 1024; var tabulka = ; // Pole s proměnnými var arrObj = [, ]; // 2 pole uvnitř obsahující objekty

Syntaxe literálu pole umožňuje vložit volitelnou koncovou čárku, tzn. literál [,] odpovídá poli se dvěma prvky, nikoli třemi.

Dalším způsobem, jak vytvořit pole, je zavolat konstruktor Array(). Konstruktor můžete volat třemi různými způsoby:

    Zavolejte konstruktor bez argumentů:

    Var arr = new Array();

    V tomto případě bude vytvořeno prázdné pole, ekvivalentní literálu.

    Zavolejte konstruktor s jediným číselným argumentem určujícím délku pole:

    Var arr = new Array(10);

    V tomto případě se vytvoří prázdné pole zadané délky. Tuto formu volání konstruktoru Array() lze použít k předběžnému přidělení paměti pro pole, pokud je předem znám počet jeho prvků. Všimněte si, že to neukládá žádné hodnoty do pole.

    Explicitně zadejte hodnoty prvních dvou nebo více prvků pole nebo jednoho nečíselného prvku ve volání konstruktoru:

    Var arr = new Array(5, 4, 3, 2, 1, "test");

    V tomto případě se argumenty konstruktoru stanou hodnotami prvků nového pole. Použití literálů pole je téměř vždy jednodušší než použití konstruktoru Array().

Prvky pole pro čtení a zápis

K prvkům pole se přistupuje pomocí operátoru. Nalevo od závorek musí být odkaz na pole. Uvnitř závorek musí být libovolný výraz, který vrací nezápornou celočíselnou hodnotu. Tato syntaxe je užitečná pro čtení i zápis hodnoty prvku pole. Proto jsou platné všechny následující pokyny pro JavaScript:

// Vytvořte pole s jedním prvkem var arr = ["world"]; // Přečtení prvku 0 var value = arr; // Zapište hodnotu do prvku 1 arr = 3,14; // Zapište hodnotu do prvku 2 i = 2; arr[i] = 3; // Zapište hodnotu do prvku 3 arr = "hello"; // Přečteme prvky 0 a 2, zapíšeme hodnotu do prvku 3 arr] = arr;

Dovolte mi připomenout, že pole jsou specializovaný typ objektu. Hranaté závorky používané pro přístup k prvkům pole fungují přesně stejně jako hranaté závorky používané pro přístup k vlastnostem objektu. Interpret JavaScriptu převede číselné indexy v závorkách na řetězce – index 1 se změní na řetězec „1“ – a poté řetězce použije jako názvy vlastností.

Na převodu číselných indexů na řetězce není nic zvláštního: totéž můžete udělat s běžnými objekty:

Var obj = (); // Vytvořte jednoduchý objekt obj = "one"; // Indexujte jej celými čísly

Věc na polích je, že když použijete názvy vlastností, které jsou nezáporná celá čísla, pole automaticky určí hodnotu vlastnosti length. Například výše jsme vytvořili pole arr s jedním prvkem. Poté přiřadil hodnoty svým prvkům na indexech 1, 2 a 3. V důsledku těchto operací se hodnota vlastnosti length pole změnila na 4.

Indexy v poli byste měli jasně odlišit od názvů vlastností objektů. Všechny indexy jsou názvy vlastností, ale pouze vlastnosti s názvy reprezentovanými celými čísly jsou indexy. Všechna pole jsou objekty a můžete k nim přidat vlastnosti s libovolnými názvy. Pokud se však dotknete vlastností, které jsou indexy pole, pole odpoví aktualizací hodnoty vlastnosti length podle potřeby.

Vezměte prosím na vědomí, že jako indexy pole lze použít záporná a neceločíselná čísla. V tomto případě jsou čísla převedena na řetězce, které se používají jako názvy vlastností.

Přidávání a odebírání prvků pole

Již jsme viděli, že nejjednodušší způsob, jak přidat prvky do pole, je přiřadit hodnoty novým indexům. Můžete také použít metodu push() k přidání jednoho nebo více prvků na konec pole:

Var arr = ; // Vytvořte prázdné pole arr.push("nula"); // Přidání hodnoty na konec arr.push("one",2); // Přidejte další dvě hodnoty

Prvek můžete také přidat na konec pole přiřazením hodnoty prvku arr. Chcete-li vložit prvek na začátek pole, můžete použít metodu unshift(), která posune existující prvky v poli na pozici s více vysoké indexy.

Prvky pole můžete odstranit pomocí odstranit operátor, jako normální vlastnosti objektu:

Var arr = ; smazat arr; 2 v arr; // false, index 2 v poli není definován arr.length; // 3: operátor delete nemění vlastnost length pole

Odebrání prvku je podobné (ale mírně odlišné) jako přiřazení nedefinované hodnoty tomuto prvku. Všimněte si, že použití operátoru delete na prvek pole nezmění hodnotu vlastnosti length ani neposune prvky s vyššími indexy dolů, aby se vyplnilo prázdné místo po odstranění prvku.

Je také možné odstranit prvky na konci pole jednoduchým přiřazením nové hodnoty vlastnosti length. Pole mají metodu pop() (opak push()), která zkracuje délku pole o 1 a vrací hodnotu odebraného prvku. Existuje také metoda shift() (opak unshift()), která odstraní prvek na začátku pole. Na rozdíl od operátoru delete posouvá metoda shift() všechny prvky dolů na pozici pod jejich aktuálním indexem.

Konečně je tu víceúčelová metoda splice(), která umožňuje vkládat, odstraňovat a nahrazovat prvky polí. Změní hodnotu vlastnosti length a podle potřeby posouvá prvky pole na nižší nebo vyšší indexy. Na všechny tyto metody se podíváme o něco později.

Vícerozměrná pole

JavaScript nepodporuje "skutečné" vícerozměrná pole, ale umožňuje vám je dobře simulovat pomocí polí polí. Chcete-li získat přístup k datovému prvku v poli polí, jednoduše použijte operátor dvakrát.

Předpokládejme například, že proměnná matice je pole polí čísel. Každý prvek matice[x] je polem čísel. Pro přístup určitý počet v poli můžete použít výraz matice[x][y]. Níže je konkrétní příklad, Kde dvourozměrné pole používá se jako násobící tabulka:

// Vytvoření vícerozměrného pole var table = new Array(10); // V tabulce je 10 řádků pro(var i = 0; i

Metody třídy Array

Standard ECMAScript 3 definuje Array.prototype jako sadu pohodlné funkce pro práci s poli, které jsou dostupné jako metody libovolného pole. Tyto metody budou představeny v následujících podkapitolách.

metoda join().

Metoda Array.join() převede všechny prvky pole na řetězce, spojí je a vrátí výsledný řetězec. Jako volitelný argument můžete metodě předat řetězec, který bude použit k oddělení prvků ve výsledném řetězci. Pokud není zadán oddělovací řetězec, použije se čárka. Například následující fragment má za následek řetězec "1,2,3":

Var arr = ; arr.join(); // "1,2,3" arr.join("-"); // "1-2-3"

metoda reverse().

Metoda Array.reverse() obrátí pořadí prvků v poli a vrátí přeuspořádané pole. Permutace se provádí přímo v původním poli, tzn. tato metoda nevytváří nové pole s přeuspořádanými prvky, ale přeskupuje je do již existující pole. Například následující úryvek pomocí metod reverse() a join() vede k řetězci "3,2,1":

Var arr = ; arr.reverse().join(); // "3,2,1"

metoda sort().

Metoda Array.sort() třídí prvky ve zdrojovém poli a vrací seřazené pole. Pokud je metoda sort() volána bez argumentů, řazení se provádí v abecedním pořadí (prvky jsou v případě potřeby dočasně převedeny na řetězce pro porovnání). Nedefinované prvky se přesunou na konec pole.

Chcete-li seřadit v jiném než abecedním pořadí, na metodu řazení() můžete předat porovnávací funkci jako argument. Tato funkce nastavuje, který z jejích dvou argumentů má být v seřazeném seznamu první. Pokud musí první argument předcházet druhému, musí se vrátit funkce porovnání záporné číslo. Pokud má první argument následovat za druhým v seřazeném poli, musí funkce vrátit číslo větší než nula. A pokud jsou dvě hodnoty ekvivalentní (to znamená, že na jejich pořadí nezáleží), porovnávací funkce by měla vrátit 0:

Var arr = ; arr.sort(); // Abecední pořadí: 1111, 222, 33, 4 arr.sort(funkce(a,b) ( // Číselné pořadí: 4, 33, 222, 1111 vrátit a-b; // Vrátí hodnotu 0 // v závislosti na pořadí řazení a a b )); // Seřadit v opačném směru, od největšího po nejmenší arr.sort(function(a,b) (return b-a));

Všimněte si, jak pohodlné je v tomto úryvku použít nepojmenovanou funkci. Porovnávací funkce je použita pouze zde, takže není třeba ji pojmenovávat.

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(), a hodnoty všech argumentů předávaných concat(). Pokud je některý z těchto argumentů sám polem, jeho prvky se přidají do vráceného pole. Je však třeba poznamenat, že neexistuje žádná rekurzivní transformace pole polí na jednorozměrné pole. Metoda concat() nemění původní pole. Níže uvádíme několik příkladů:

Var arr = ; arr.concat(4, 5); // Návrat arr.concat(); // Návrat arr.concat(,) // Návrat arr.concat(4, ]) // Návrat ]

metoda slice().

Metoda Array.slice() vrací řez nebo podpole zadaného pole. Dva argumenty metody určují začátek a konec vráceného fragmentu. Vrácené pole obsahuje prvek, jehož číslo je zadáno v prvním argumentu, plus všechny následující prvky až po prvek, jehož číslo je zadáno ve druhém argumentu (ale bez něj).

Pokud je zadán pouze jeden argument, vrácené pole obsahuje všechny prvky od počáteční pozice do konce pole. Pokud má některý z argumentů záporná hodnota, určuje číslo prvku vzhledem ke konci pole. Argument -1 tedy odpovídá poslednímu prvku pole a argument -3 odpovídá třetímu prvku pole od konce. Zde je několik příkladů:

Var arr = ; arr.slice(0,3); // Návrat arr.slice(3); // Návrat arr.slice(1,-1); // Návrat arr.slice(-3,-2); // Návrat

metoda splice().

Metoda Array.splice() je univerzální metoda, který vkládá nebo odebírá prvky z pole. Na rozdíl od metod slice() a concat() metoda splice() upravuje původní pole, na kterém byla volána. Všimněte si, že metody splice() a slice() mají velmi podobné názvy, ale provádějí zcela odlišné operace.

Metoda splice() může odstranit prvky z pole, vložit nové prvky nebo provést obojí současně. Prvky pole jsou posunuty podle potřeby, aby se po vložení nebo vymazání vytvořila souvislá sekvence.

První argument metody splice() určuje pozici v poli, ze které bude provedeno vložení a/nebo odstranění. Druhý argument určuje počet prvků, které by měly být odstraněny (vyříznuty) z pole. Pokud je druhý argument vynechán, budou odstraněny všechny prvky pole od zadaného do konce pole. Metoda splice() vrací pole odstraněných prvků nebo (pokud nebyly odstraněny žádné prvky) prázdné pole.

První dva argumenty metody splice() určují prvky pole, které mají být odstraněny. Po těchto 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í zadanou v prvním argumentu.

Var arr = ; arr.splice(4); // Return , arr = arr.splice(1,2); // Return , arr = arr.splice(1,1); // Návrat ; arr = arr =; arr.splice(2,0,"a","b"); // Návrat ; arr =

metody push() a pop().

Metody push() a pop() umožňují pracovat s poli, jako by to byly zásobníky. Metoda push() přidá jeden nebo více nových prvků na konec pole a vrátí jeho novou délku. Metoda pop() provede obrácenou operaci – odstraní poslední prvek pole, zkrátí délku pole a vrátí hodnotu, kterou odstranil. Všimněte si, že obě tyto metody upravují původní pole namísto vytváření jeho upravené kopie.

metody unshift() a shift().

Metody unshift() a shift() se chovají téměř stejně jako push() a pop(), až na to, že vkládají a odebírají prvky na začátek pole, nikoli na konec. Metoda unshift() posune existující prvky na větší indexy, aby se uvolnilo místo, přidá prvek nebo prvky na začátek pole a vrátí novou délku pole. Metoda shift() odstraní a vrátí první prvek pole, přičemž všechny následující prvky posune o jednu pozici dolů, aby zabraly místo uvolněné na začátku pole.

V této lekci se seznámíme s poli, naučíme se je vytvářet, provádět operace s jejich prvky a také se podíváme na základní metody a vlastnosti dostupné při práci s nimi.

Koncept pole

Pole je uspořádaná kolekce dat, která má název a je instancí objektu Array. Skládá se z prvků, ke kterým se přistupuje pomocí jejich sériové číslo(index). Číslování prvků v poli nezačíná od 1, ale od 0.

Následující obrázek ukazuje číselné pole, skládající se ze 7 prvků. Prvky tohoto pole obsahovat následující údaje: 1 prvek (0 index) - číslo 123, 2 prvek (1 index) - číslo 214, 3 prvek (2 index) - číslo 315 atd.

//prvek, do kterého pole vypíšeme //vytvoření číselného pole var numberArray = new Array(123,214,315,312,124,206,218); //vyvede pole do prvku s id="myP" document.getElementById("myP").innerHTML = "1 prvek pole: " + numberArray + "
" + "2 Prvek pole: " + čísloArray + "
" + "3 Prvek pole: " + čísloArray + "
" + "4 Prvek pole: " + čísloArray + "
" + "5 Element pole: " + čísloArray + "
" + "6 Element pole: " + čísloArray + "
" + "7 Prvek pole: " + čísloPole;

Vytvoření (deklarace) pole

Vytvoření pole v JavaScriptu se provádí pomocí operátor nový a funkce konstruktoru pole. V závorkách funkce konstruktoru Array můžete zadat jednu z následujících hodnot:

  • Číslo. V tomto případě tuto funkci vytvoří pole sestávající ze zadaného počtu prvků. Všechny tyto prvky budou mít hodnotu undefined.
  • Více hodnot oddělených čárkami. V tomto případě funkce konstruktoru Array vytvoří pole sestávající ze zadaného počtu prvků a přiřadí jim příslušné hodnoty.
  • Nic. V tomto případě tato funkce vytvoří prázdné pole.

Na rozdíl od mnoha jiných programovacích jazyků, pole v JavaScriptu automaticky mění svou velikost, tzn. jsou ze své podstaty dynamické. Taková pole nemusí mít žádné rozměry. Ještě jeden charakteristický rys JavaScriptová pole je to v různé prvky stejné pole může obsahovat různé typy data.

Práce s prvky Array

Aby bylo možné kontaktovat konkrétní prvek pole, musíte zadat název tohoto pole a jeho index v hranatých závorkách. Tato operace také nazývaná operace indexování.

Vytvoříme například prázdné pole a přidáme k němu 4 textový prvek:

//vytvoření prázdného pole smartphoneColors var smartphoneColors = new Array(); //přiřadí 1 prvku pole (index 0) hodnotu "Black" smartphoneColors = "Black"; //přiřadí 2. prvek pole (index 1) hodnotě "White" smartphoneColors = "White"; //přiřadí 3. prvek pole (index 2) hodnotě "Grey" smartphoneColors = "Grey"; //přiřadí 4. prvek pole (index 3) hodnotě "Blue" smartphoneColors = "Blue";

Zobrazme například hodnoty 2 a 4 prvků pole smartphonuColors v konzole prohlížeče (F12):

Console.log("2 element = " + barvy smartphonu); console.log("4 element = " + barvy smartphonu);

Délka pole (počet prvků v poli)

Určení počtu prvků v poli se provádí pomocí vlastnosti length.

//vytvoří pole výpisem hodnot prvků ve funkci Array var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //přiřadí proměnnou lengthArray délce pole volumeHDDs var lengthArray = volumeHDDs.length;

Jak získat první prvek pole

Hodnota prvního prvku pole se získá zadáním čísla 0 v hranatých závorkách tohoto pole:

//vytvoření pole sestávajícího ze 3 prvků var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //získání hodnoty prvního prvku pole var firstValue = volumeHDDs;

Jak získat poslední prvek pole

Hodnota posledního prvku pole se získá zadáním výrazu název_pole.délka-1 v hranatých závorkách tohoto pole:

//vytvoření pole sestávajícího ze 3 prvků var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //získání hodnoty posledního prvku pole var lastValue = volumeHDDs;

Iterace přes pole

Iterace přes prvky pole se provádí pomocí cyklu for.

Pojďme například iterovat všechny prvky pole a zobrazit jejich hodnoty v konzole prohlížeče (F12):

//vytvoření pole nameStudents, sestávajícího ze 4 prvků var nameStudents = new Array("Petya","Vasya","Kolya","Maxim"); // iterace prvků pole z 0 na délku pole-1 for (var i=0; i


Nahoru