Pochopení polí v JavaScriptu

Tento článek byl původně napsán pro DigitalOcean .

Úvod

Pole v JavaScriptu je typ globálního objektu, který se používá k ukládání dat. Pole se skládají z uspořádané kolekce nebo seznamu obsahujícího nula nebo více datových typů a používají číslované indexy počínaje 0 pro přístup ke konkrétním položkám.

Pole jsou velmi užitečná, protože ukládají více hodnot do jedné proměnné, což může zhušťovat a organizovat náš kód, takže je čitelnější a udržovatelnější. Pole mohou obsahovat libovolný datový typ, včetně čísel, řetězců a objektů.

Chcete-li demonstrovat, jak může být pole užitečné, zvažte přiřazení pěti světových oceánů k jejich vlastním proměnným.

// Assign the five oceans to five variables
const ocean1 = 'Pacific'
const ocean2 = 'Atlantic'
const ocean3 = 'Indian'
const ocean4 = 'Arctic'
const ocean5 = 'Antarctic'

Tato metoda je velmi podrobná a může být rychle obtížné ji udržovat a sledovat. Pomocí polí můžeme naše data zjednodušit.

// Assign the five oceans
let oceans = ['Pacific', 'Atlantic', 'Indian', 'Arctic', 'Antarctic']

Namísto vytváření pěti samostatných proměnných nyní máme jednu proměnnou, která obsahuje všech pět prvků. Použili jsme hranaté závorky ([] ) a vytvořte pole.

Přístup ke konkrétní položce je stejně snadný jako připojení indexu k proměnné.

// Print out the first item of the oceans array
oceans[0]
Pacific

V tomto článku se naučíme, jak vytvářet pole, jak jsou indexována, jak přidávat, upravovat, odstraňovat nebo přistupovat k položkám v poli a jak procházet polemi.

Vytvoření pole

Existují dva způsoby, jak vytvořit pole v JavaScriptu. Literál pole, který používá hranaté závorky, a konstruktor pole, který používá new klíčové slovo.

Pojďme si ukázat, jak vytvořit pole druhů žraloků pomocí konstruktoru pole, který je inicializován new Array() .

// Initialize array of shark species with array constructor
let sharks = new Array('Hammerhead', 'Great White', 'Tiger')

Nyní jsou zde stejná data vytvořená pomocí literálu pole, který je inicializován pomocí [] .

// Initialize array of shark species with array literal
let sharks = ['Hammerhead', 'Great White', 'Tiger']

Obě metody vytvoří pole. Metoda maticového literálu (hranaté závorky) je však mnohem běžnější a preferovanější, jako je new Array() metoda konstruktoru může mít nekonzistence a neočekávané výsledky. Je užitečné znát konstruktor pole pro případ, že se s ním setkáte.

Můžeme vytisknout celé pole, které bude zobrazovat totéž jako náš vstup.

// Print out the entire sharks array
sharks
;['Hammerhead', 'Great White', 'Tiger']

Pole se často používají k seskupování seznamů podobných datových typů, ale technicky mohou obsahovat libovolnou hodnotu nebo kombinaci hodnot, včetně jiných polí.

// Initialize array of mixed datatypes
let mixedData = ['String', null, 7, ['another', 'array']]

Po vytvoření pole s nimi můžeme manipulovat mnoha způsoby, ale nejprve musíme pochopit, jak jsou pole indexována.

Indexování polí

Pokud jste se dozvěděli o indexování a manipulaci s řetězci v JavaScriptu, možná jste již obeznámeni s konceptem indexování polí, protože řetězec je podobný poli.

Pole nemají páry název/hodnota. Místo toho jsou indexovány celočíselnými hodnotami začínajícími 0 . Zde je příklad pole přiřazeného k seaCreatures .

let seaCreatures = ['octopus', 'squid', 'shark', 'sea horse', 'starfish']

Zde je rozpis jednotlivých položek v seaCreatures pole je indexováno.

chobotnice chobotnice žralok mořský koník hvězdice
0 1 2 3 4

První položka v poli je octopus , který je indexován na 0 . Poslední položka je starfish , který je indexován na 4 . Počítání začíná 0 v indexech, což je v rozporu s naší přirozenou intuicí začít počítat od jedné, takže je třeba věnovat zvláštní pozornost tomu, abyste si to pamatovali, dokud se to nestane přirozeným.

Můžeme zjistit, kolik položek je v poli pomocí length vlastnost.

seaCreatures.length
5

Ačkoli indexy seaCreatures sestávají z 0 na 4 , length property vypíše skutečné množství položek v poli, počínaje jedničkou.

Pokud chceme zjistit indexové číslo konkrétní položky v poli, například sea horse , můžeme použít indexOf() metoda.

seaCreatures.indexOf('sea horse')
3

Pokud není číslo indexu nalezeno, například pro hodnotu, která neexistuje, konzole vrátí -1 .

Přístup k položkám v poli

K položce v poli JavaScript se přistupuje odkazem na číslo indexu položky v hranatých závorkách.

seaCreatures[1]
squid

Známe 0 vždy vypíše první položku v poli. Můžeme také najít poslední položku v poli provedením operace na length vlastnost a použít ji jako nové číslo indexu.

const lastIndex = seaCreatures.length - 1

seaCreatures[lastIndex]
starfish

Pokus o přístup k neexistující položce vrátí undefined .

seaCreatures[10]
undefined

Pro přístup k položkám ve vnořeném poli byste přidali další číslo indexu, které by odpovídalo vnitřnímu poli.

let nestedArray = [
  ['salmon', 'halibut'],
  ['coral', 'reef'],
]

nestedArray[1][0]
coral

Ve výše uvedeném příkladu jsme přistupovali k poli na pozici 1 z nestedArray proměnnou a poté položku na pozici 0 ve vnitřním poli.

Přidání položky do pole

V našem seaCreatures měli jsme pět položek, které se skládaly z indexů z 0 na 4 . Pokud chceme do pole přidat novou položku, můžeme přiřadit hodnotu dalšímu indexu.

seaCreatures[5] = 'whale'

seaCreatures
[ 'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	'whale' ]

Pokud přidáme položku a omylem přeskočíme index, vytvoří se v poli nedefinovaná položka.

seaCreatures[7] = 'pufferfish'

seaCreatures
[ 'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	,
	'whale',
	'pufferfish' ]

Pokus o přístup k další položce pole vrátí undefined .

seaCreatures[6]
undefined

Podobným problémům se lze vyhnout pomocí push() metoda, která přidá položku na konec pole.

// Append lobster to the end of the seaCreatures array
seaCreatures.push('lobster')

seaCreatures
[ 'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	,
	'whale',
	'pufferfish',
	'lobster' ]

Na druhém konci spektra je unshift() metoda přidá položku na začátek pole.

// Append otter to the beginning of the seaCreatures array
seaCreatures.unshift('otter')

seaCreatures
[ 'otter',
	'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	,
	'whale',
	'pufferfish',
	'lobster' ]

Mezi push() a unshift() budete moci přidávat položky na začátek a konec pole.

Odebrání položky z pole

Když chceme odstranit konkrétní položku z pole, použijeme splice() metoda. V seaCreatures pole, omylem jsme dříve vytvořili nedefinovanou položku pole, takže ji nyní odstraníme.

seaCreatures.splice(6, 1)

seaCreatures
[ 'otter',
	'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	'whale',
	'pufferfish',
	'lobster' ]

V splice() první parametr představuje číslo indexu, které má být odstraněno, a druhý parametr je počet položek, které se mají odstranit. Vložili jsme 1 , což znamená, že bude odstraněna pouze jedna položka.

splice() metoda změní původní proměnnou. Pokud chcete, aby původní proměnná zůstala nezměněna, použijte slice() a výsledek přiřaďte nové proměnné.

let newArray = slice(6, 1)

pop() metoda odstraní poslední položku v poli.

// Remove the last item from the seaCreatures array
seaCreatures.pop()

seaCreatures
[ 'otter',
	'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	'whale',
	'pufferfish' ]

lobster byla odstraněna jako poslední položka pole. Abychom odstranili první položku pole, použijeme shift() metoda.

// Remove the first item from the seaCreatures array
seaCreatures.shift()

seaCreatures
[ 'octopus',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	'whale',
	'pufferfish' ]

Pomocí pop() a shift() , můžeme odstranit položky ze začátku a konce polí. Pomocí pop() je preferováno, kdekoli je to možné, protože zbytek položek v poli si ponechává stejné indexové číslo.

Úprava položek v polích

Jakoukoli hodnotu v poli můžeme přepsat přiřazením nové hodnoty pomocí operátoru přiřazení, stejně jako u běžné proměnné.

// Assign manatee to the first item in the seaCreatures array
seaCreatures[0] = 'manatee'

seaCreatures
[ 'manatee',
	'squid',
	'shark',
	'sea horse',
	'starfish',
	'whale',
	'pufferfish' ]

Dalším způsobem, jak upravit hodnotu, je použití splice() metoda s novým parametrem. Pokud bychom chtěli změnit hodnotu sea horse , což je položka na indexu 3 , mohli bychom ji odstranit a na její místo přidat novou položku.

// Replace sea horse with sea lion using splice method
seaCreatures.splice(3, 1, 'sea lion')

seaCreatures()
[ 'manatee',
	'squid',
	'shark',
	'sea lion',
	'starfish',
	'whale',
	'pufferfish' ]

Ve výše uvedeném příkladu jsme odstranili sea horse z pole a vložil novou hodnotu do indexu 3 .

Procházení polem

Můžeme procházet celým polem pomocí for klíčové slovo s využitím length vlastnictví. V tomto příkladu můžeme vytvořit pole shellfish a vytiskněte každé číslo indexu i každou hodnotu do konzole.

// Create an array of shellfish species
let shellfish = ['oyster', 'shrimp', 'clam', 'mussel']

// Loop through the length of the array
for (let i = 0; i < shellfish.length; i++) {
  console.log(i, shellfish[i])
}
0 'oyster'
1 'shrimp'
2 'clam'
3 'mussel'

Můžeme také použít for...of smyčka, novější funkce JavaScriptu.

// Create an array of aquatic mammals
let mammals = ['dolphin', 'whale', 'otter']

// Loop through each mammal
for (let mammal of mammals) {
  console.log(mammal)
}
dolphin
whale
otter

for...of loop nenačte indexové číslo prvků v poli, ale je to obecně jednodušší a výstižnější způsob, jak procházet polem. Použití smyček je mimořádně užitečné pro tisk celé hodnoty pole, například při zobrazování položek z databáze na webu.

Závěr

Pole jsou extrémně univerzální a základní součástí programování v JavaScriptu. V tomto článku jsme se naučili, jak vytvořit pole, jak jsou pole indexována a některé z nejběžnějších úkolů práce v polích, jako je vytváření, odebírání a úpravy položek. Také jsme se naučili dvě metody procházení polí, které se používají jako běžná metoda zobrazení dat.