Array
Array
w języku JavaScript jest globalnym obiektem, który jest używany podczas tworzenia tablic – listo-podobnych obieków wysokiego poziomu.
Stwórz tablicę
var owoce = ['Jabłko', 'Banan'];
console.log(owoce.length);
// 2
Dostawanie się do elementu tablicy
var pierwszy = owoce[0];
// Jablko
var ostatni = owoce[owoce.length - 1];
// Banan
Pętla przechodząca przez zawartość tablicy
owoce.forEach(function(item, index, array) {
console.log(item, index);
});
// Jablko 0
// Banan 1
Dodawanie elementu na końcu tablicy
var nowaDługosc = owoce.push('Pomarańcz');
// ["Jabłko", "Banan", "Pomarańcz"]
Usuwanie elemetu z końca tablicy
var ostatni = owoce.pop(); // usuwa pomarańczę z końca
// ["Jabłko", "Banan"];
Usuwanie elementu z przodu tablicy
var pierwszy = owoce.shift(); // usuwa jabłko z początku
// ["Banan"];
Dodawanie elementu z przodu tablicy
var nowaDługość = owoce.unshift('Truskawki') // dodaje na początku
// ["Truskawkę", "Banan"];
Znajdowanie indeksu (numeru porządkowego) elementu t tablicy
owoce.push('Mango');
// ["Truskawka", "Banan", "Mango"]
var pos = owoce.indexOf('Banan');
// 1
Usuwanie obiektu przy użyciu indeksu
var usunElement = owoce.splice(pos, 1); // tak się usuwa element
// ["Truskawka", "Mango"]
Usuwanie elementów przy użyciu pozycji w indeksie
var warzywa = ["Kapusta", "Rzepa", "Rzodkiew", "Marchew"];
console.log(warzywa);
// ["Kapusta", "Rzepa", "Rzodkiew", "Marchew"]
var pos = 1, n = 2;
var usunieteElementy = warzywa.splice(pos, n);
// n oznacza liczbę elementów do usunięcia
// zaczynając od elementu na określonej pozycji(pos)
console.log(warzywa);
// ["Kapusta", "Marchew"] (początkowa tablica została zmieniona)
console.log(usunieteElementy);
// ["Rzepa", "Rzodkiew"]
Kopiowanie tablicy
var płytkaKopia = owoce.slice(); // tak się tworzy kopię
// ["Truskawka", "Mango"]
Składnia:
[element0, element1, ..., elementN]
new Array(element0, element1[, ...[, elementN]])
new Array(długoscTablicy)
elementN
- Lista wartości elementów tablicy. Tablica jest inicjowana z określonymi wartościami jako jej elementami. Długość tablicy (
length
) odpowiada liczbie jej elementów. długośćTablicy
- Początkowa długość tablicy. Aby móc przetwarzać wartości używamy własności długości tablicy
length
. Jeśli określona wartość nie jest liczbą, zostanie utworzona tablica jednoelementowa, a jej pierwszy element będzie posiadał ową wartość. Maksymalna długość tablicy wynosi 4,294,967,295 elementów.
Opis
Tablica jest uporządkowanym zbiorem wartości przyporządkowanych ustalonej pojedynczej zmiennej.
Poniższy przykład tworzy obiekt Array
przy użyciu literału tablicy. Tablica kawa
zawiera trzy elementy i ma długość (length
) równą 3:
kawa = ["mocca", "cappucino", "zbożowa"]
Można utworzyć tzw. zwartą tablicę składającą się z dwóch lub więcej elementów, o początkowym indeksie 0, jeśli poda się początkowe wartości wszystkich elementów. Zwarta tablica to taka, w której każdy element posiada wartość. Poniższy kod tworzy zwartą tablicę o trzech elementach:
myArray = new Array("Hello", myVar, 3.14159)
Dostęp do elementów tablicy
Do elementów tablicy odwołujemy się po ich liczbie porządkowej (zaczynając od zera). Przykładowo, jeśli mamy zdefiniowaną tablicę:
mojaTablica = new Array("Wiatr","Deszcz","Ogień")
Do pierwszego elementu odwołujemy się poprzez mojaTablica[0]
, a do drugiego poprzez mojaTablica[1]
.
Podawanie pojedynczego parametru
Jeśli konstruktor Array
zostanie wywołany z pojedynczym parametrem liczbowym, parametr ten zostanie uznany za początkową długość tablicy. Poniższy kod tworzy tablicę pięciu elementów:
rodzajPlatnosci = new Array(5)
Zachowanie konstruktora Array
zależy od tego, czy jedyny parametr jest liczbą.
- Jeśli jedyny parametr jest liczbą, konstruktor konwertuje tę liczbą do 32-bitowej liczby całkowitej bez znaku i tworzy tablicę o długości (liczbie elementów,
length
) równej tej liczbie. Tablica początkowo nie zawiera żadnych elementów, mimo że ma niezerową długość. - Jeśli parametr ten nie jest liczbą, tworzona jest tablica o długości 1, a parametr ten staje się jej pierwszym elementem.
Poniższy kod tworzy tablicę o długości 25, a następnie przypisuje wartości pierwszym trzem elementom:
rodzajeMuzyki = new Array(25)
rodzajeMuzyki[0] = "R&B"
rodzajeMuzyki[1] = "Blues"
rodzajeMuzyki[2] = "Jazz"
Pośrednie zwiększanie długości tablicy
Długość tablicy wzrasta samoczynnie, jeśli elementowi o indeksie wyższym niż obecna długość zostanie przypisana wartość. Poniższy kod tworzy tablicę o zerowej długości, a następnie przypisuje do niej 99. element. W wyniku długość tablicy zostaje zmieniona na 100.
kolory = new Array();
kolory[99] = "ciemnoniebieski";
Tworzenie tablicy z wyników wyrażenia regularnego
Wynik porównania pomiędzy regularnym wyrażeniem a łańcuchem znaków może utworzyć tablicę. Ta tablica ma własności i elementy, które przekazują informacje dotyczące porównania. Tablica jest wartością zwracaną przez RegExp.exec
, String.match
i String.replace
. Aby zrozumieć te własności spójrz na poniższy przykład odwołując się do poniższej tabeli:
//Porównuje łańcuch znaków złożony z jednego 'd' następnie kilku 'b' a następnie jednego 'd'
//Zapamiętuje porównane 'b' i następujące 'd'
//Ignoruje wielkość liter
mojRe=/d(b+)(d)/i;
mojaTablica = mojRe.exec("cdbBdbsbz");
Własności i elementy zwracają wartości z poniższej tabeli:
Własność/Element | Opis | Przykład |
input |
Wartość tylko-do-odczytu, opisująca oryginalny łańcuch znaków, do którego porównano wyrażenie regularne. | cdbBdbsbz |
index |
Własność tylko-do-odczytu, będąca indeksem (zaczynając od 0) porównanego znaku w łańcuchu znaków. | 1 |
[0] |
Element tylko-do-odczytu, zawierający ostatnio porównane znaki. | dbBd |
[1], ... [n] |
Elementy tylko-do-odczytu, zawierające podobne podłańcuchy znaków, zawarte w wyrażeniu regularnym. Liczba możliwych podłańcuchów jest nieskończona. | [1]: bB [2]: d |
Własności
-
Array.length
- Odzwierciedla ilość elementów tablicy.
Array.prototype
- Pozwala na dodawanie własności do wszystkich obiektów.
Metody
Array.from()
Experimental- Tworzy nową instancję
Array
z obiektu podobnego do tablicy lub iterowalnego. Array.isArray()
- Zwraca true, jeśli zmienna jest tablicą, jeśli nie false.
Array.observe()
Experimental- Asynchronicznie obserwuje zmiany w tablicach, podobnie jak
Object.observe ()
dla obiektów. Zapewnia strumień zmian w kolejności występowania. Array.of()
Experimental- Tworzy nową instancję Array ze zmienną liczbą argumentów, niezależnie od liczby lub rodzaju argumentów.
Przykłady
Przykład: Tworzenie tablicy
Poniższy kod tworzy tablicę msgArray
o długości 0, a następnie przypisuje wartości do msgArray[0]
i msgArray[99]
, zwiększając długość tablicy do 100.
msgArray = new Array()
msgArray[0] = "Witaj,"
msgArray[99] = "świecie"
// Poniższy warunek jest spełniony,
// ponieważ zdefiniowano element msgArray[99].
if (msgArray.length == 100)
myVar="Długość tablicy jest równa 100."
Przykład: Tworzenie tablicy dwuwymiarowej
Poniższy kod tworzy tablicę dwuwymiarową i przypisuje wyniki do zmiennej myVar
.
myVar="Test tablicy wielowymiarowej; "
a = new Array(4)
for (i=0; i < 4; i++) {
a[i] = new Array(4)
for (j=0; j < 4; j++) {
a[i][j] = "["+i+","+j+"]"
}
}
for (i=0; i < 4; i++) {
str = "Wiersz "+i+":"
for (j=0; j < 4; j++) {
str += a[i][j]
}
myVar += str +"; "
}
Poniższy łańcuch znaków będzie przypisany do zmiennej myVar
(linie zostały przełamane dla zwiększenia czytelności):
Test tablicy wielowymiarowej; Wiersz 0:[0,0][0,1][0,2][0,3]; Wiersz 1:[1,0][1,1][1,2][1,3]; Wiersz 2:[2,0][2,1][2,2][2,3]; Wiersz 3:[3,0][3,1][3,2][3,3];