Dokumentacja języka JavaScript 1.5:Obiekty:Array
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
UWAGA: Tłumaczenie tej strony nie zostało zakończone.
Może być ona niekompletna lub wymagać korekty.
Chcesz pomóc? | Dokończ tłumaczenie | Sprawdź ortografię | Więcej takich stron...
Spis treści |
[edytuj] Podsumowanie
Obiekt główny
Pozwala na pracę z tablicami.
Zobacz także: Nowości w JavaScript 1.6#Array extras i Nowości w JavaScript_1.7#Array_comprehensions
[edytuj] Tworzony przez
Konstruktor obiektu Array:
new Array(długośćTablicy) new Array(element0, element1, ..., elementN)
Literał tablicy:
[element0, element1, ..., elementN]
[edytuj] Parametry
-
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.
-
elementN - Lista wartości elementów tablicy. Tablica jest inicjowana z określonymi wartościami jako jej elementami, a długość tablicy (
length) odpowiada liczbie jej elementów.
[edytuj] 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)
[edytuj] 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].
[edytuj] 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"
[edytuj] 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";
[edytuj] 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:
<SCRIPT LANGUAGE="JavaScript1.2">
//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");
</SCRIPT>
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 |
[edytuj] Zgodność wsteczna
[edytuj] JavaScript 1.2
Zachowanie konstruktora Array z pojedynczym parametrem zależy od tego, czy znacznik <SCRIPT> zawiera atrybut LANGUAGE="JavaScript1.2":
- Jeśli znacznik
<SCRIPT>zawieraLANGUAGE="JavaScript1.2", wywołanie konstruktoraArrayz jednym parametrem zwraca tablicę jednoelementową. Na przykład,new Array(5)tworzy tablicę z jednym elementem, którym jest liczba 5. Konstruktor z pojedynczym parametrem działa więc tak samo, jak konstruktor z wieloma parametrami. Nie jest możliwe podanie długości tablicy w wywołaniu jej konstruktora. - Jeśli znacznik
<SCRIPT>nie zawieraLANGUAGE="JavaScript1.2", to jedyny parametr konstruktoraArraystanowi początkową długość tworzonej tablicy.
[edytuj] JavaScript 1.1 i starsze
Kiedy konstruktor Array wywołany zostanie z jednym parametrem, parametr ten stanowi początkową długość tworzonej tablicy. Poniższy kod tworzy tablicę pięcioelementową:
rodzajPlatnosci = new Array(5)
[edytuj] JavaScript 1.0
Do indeksowania tablicy musi być użyta jej liczba porządkowa; np. myArray[0].
[edytuj] Własności
- constructor
- Określa funkcję tworzącą prototyp obiektu.
- index
- Dla tablicy stworzonej przez porównanie wyrażenia regularnego, indeks (zaczynając od 0) znaków, wobec których nastąpiło porównanie w łańcuchu znaków.
- input
- Dla tablicy stworzonej przez porównanie wyrażenia regularnego, zawiera oryginalny łańcuch znaków, wobec którego nastąpiło porównanie.
- length
- Odzwierciedla ilość elementów tablicy.
- prototype
- Pozwala na dodawanie własności do wszystkich obiektów.
[edytuj] Metody
[edytuj] Metody modyfikujące
Te metody modyfikują tablice:
- pop
- Usuwa ostatni element tablicy i zwraca ten element.
- push
- Dodaje nowe elementy do końca tablicy i zwraca nową długość tablicy.
- reverse
- Odwraca kolejność elementów w tablicy - pierwszy staje się ostatnim, ostatni pierwszym.
- shift
- Usuwa pierwszy element tablicy i zwraca ten element.
- sort
- Sortuje elementy tablicy.
- splice
- Dodaje i/lub usuwa elementy z tablicy.
- unshift
- Dodaje jedną lub więcej elementów na początek tablicy i zwraca nową długość tablicy.
[edytuj] Metody dostępowe
Następujące metody nie modyfikuję tablicy, ale zwracają pewne reprezentacje tablicy.
- concat
- Zwraca nową tablicę złożoną z tej tablicy połączonej z innymi tablicami i/lub wartościami.
- indexOf
- Zwraca pierwszy (najmniejszy) indeks elementu w tablicy równego podanej wartości lub -1 gdy nie znaleziono takiego elementu.
- join
- Łączy wszystkie elementy tablicy w łańcuch znaków.
- lastIndexOf
- Zwraca ostatni (największy) indeks elementu takiego samego jak podany (odwrotnie niż indexOf) lub -1 gdy nic nie znaleziono.
- slice
- Wyciąga sekcję tablicy i zwraca nową tablicę.
- toSource
- Zwraca tablicę identyczną do podanej; możesz użyć tego do utworzenia nowej tablicy. Przesłania to metodę
Object.toSource. - toString
- Zwraca łańcuch znaków reprezentujący tablicę i jej elementy. Przesłania to metodę Object.toString.
- valueOf
- Zwraca wartość tablicy w postaci zmiennej typu prostego. Przesłania metodę Object.valueOf.
[edytuj] Metody iteracyjne
Istnieją metody, które używają jako argumentów funkcji, które mogą wywołać podczas przetwarzania tablicy. Kiedy te metody są wywoływane, wartość length tablicy jest sprawdzana i każdy element dodany w trakcie wykonywania funkcji nie jest brany pod uwagę. Inne zmiany w tablicy (zmiana wartości lub usunięcie elementu) mogą zmodyfikować wyniki operacji, jeśli metoda użyje zmienionych elementów. Specjalne zachowanie tych elementów w takich momentach nie jest zawsze zdefiniowane, i nie powinno się na takowych zbyt często polegać.
- filter
- Tworzy nową tablicę ze wszystkimi elementami pasującymi do filtra.
- forEach
- Wywołuje funkcję na każdym elemencie tablicy.
- every
- Zwraca
true, jeśli każdy element tablicy usatysfakcjonuje podaną funkcję testującą. - map
- Tworzy nową tablicę wyników funkcji, wywołanej na każdym elemencie tablicy.
- some
- Zwraca
true, jeśli choć jeden element usatysfakcjonuje podaną funkcję testującą.
- reduce
- Apply a function simultaneously against two values of the array (from left-to-right) as to reduce it to a single value.
- reduceRight
- Apply a function simultaneously against two values of the array (from right-to-left) as to reduce it to a single value.
[edytuj] Metody ogólne
Wiele metod tablicowych JavaScriptu jest stworzonych tak, aby działały do każdych obiektów, które "wyglądają" jak tablice. Mogą one być użyte z każdym obiektem, który ma własność lenght i może być łatwo dostępny używając numerycznych wartości (tak jak indeksowanie np. array[5]).
DO ZROBIENIA: podaj przykłady z Array.prototype.forEach.call, i dodając do metody obiekt jak JavaArray lub String.
Niektóre metody (jak join) tylko czytają własność length i numeryczne własności obiektów, na których są wywołane. Inne, jak reverse, wymagają żeby wartości numeryczne oraz własność length były możliwe do zmiany; metody te nie mogą więc być wywołane na obiektach takich jak String, które nie pozwalają by ich wartość length bądź syntetyzowane wartości numeryczne były zmieniane.
Następujące metody nie potrzebują zmieniać wartości length ani własności numerycznych:
Poniższe metody zmieniają własność length lub wartości numeryczne obiektu, na którym są wywołane:
[edytuj] Przykłady
[edytuj] 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."
[edytuj] 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];