Najnowsze tutoriale tworzenie stron internetowych
 

JavaScript tablice


Macierze JavaScript są używane do przechowywania wielu wartości w jednej zmiennej.


Wyświetlanie tablic

W tym tutorialu użyjemy skryptu do wyświetlania tablic wewnątrz <p> elementu o id="demo" :

Przykład

<p id="demo"></p>

<script>
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>

Pierwszy wiersz (w skrypcie) tworzy tablicę o nazwie samochody.

Druga linia "znajdzie" element o id="demo" i "displays" tablicy w "innerHTML" z niego .;


Spróbuj sam

Tworzenie tablicy i przypisywać wartości do niego:

Przykład

var cars = ["Saab", "Volvo", "BMW"];
Spróbuj sam "

Spacje i znaki końca linii nie są ważne. Oświadczenie może obejmować wiele linii:

Przykład

var cars = [
    "Saab",
    "Volvo",
    "BMW"
];
Spróbuj sam "

Nigdy nie umieszczać przecinka po ostatnim elemencie (jak "BMW" ,).
Efekt jest niespójne różnych przeglądarkach.


Czym jest tablica?

Tablica jest specjalną zmienną, która może posiadać więcej niż jedną wartość w danej chwili.

Jeśli masz listę elementów (wykaz nazw samochodów, na przykład), przechowywanie samochodów w pojedynczych zmiennych może wyglądać następująco:

var car1 = "Saab";
var car2 = "Volvo";
var car3 = "BMW";

Jednak to, co jeśli chcesz pętli samochodów i znaleźć konkretny jeden? A co, jeśli nie mieli 3 samochody, ale 300?

Rozwiązaniem jest tablicą!

Tablica może przechowywać wiele wartości pod jedną nazwą, można uzyskać dostęp do wartości, odwołując się do numeru indeksu.


Tworzenie tablicy

Korzystanie z tablicą dosłowne jest najprostszym sposobem utworzenia tablicy JavaScript.

Składnia:

var array-name = [ item1 , item2 , ...];      

Przykład:

var cars = ["Saab", "Volvo", "BMW"];

Korzystając z nowej JavaScript kluczowe

Poniższy przykład tworzy tablicę i przypisuje wartości do niego:

Przykład

var cars = new Array("Saab", "Volvo", "BMW");
Spróbuj sam "

Te dwa przykłady wyżej robią dokładnie to samo. Nie ma potrzeby stosowania new Array() .
Dla uproszczenia, czytelność i szybkość wykonania, użyj pierwsza (tablica metody dosłowne).


Dostęp do elementów tablicy

Odwołać się do elementu tablicy przez odniesienie donumeru indeksu.

To stwierdzenie ma dostęp wartość pierwszego elementu w samochodach:

var name = cars[0];

To stwierdzenie modyfikuje pierwszy element w samochodach:

cars[0] = "Opel";

[0] jest pierwszym elementem macierzy. [1] jest drugim. Array indeksy zaczynają się od 0.


Można mieć różne przedmioty w jednej macierzy

Zmienne JavaScript mogą być obiektami. Tablice są specjalne rodzaje obiektów.

W związku z tym, można mieć zmienne różnych typów w tej samej tablicy.

Można mieć obiekty w tablicy. Można mieć funkcje w tablicy. Można mieć tablice w tablicy:

myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;

Tablice są obiekty

Tablice są specjalnym typem obiektów. typeof Operator w JavaScripcie zwraca "object" na tablicach.

Ale tablice JavaScript są najlepiej opisać jako tablice.

Tablice używać numbers , aby uzyskać dostęp do jego "elements" . W tym przykładzie, person[0] zwraca John :

Szyk:

var person = ["John", "Doe", 46];
Spróbuj sam "

Przedmioty używać nazw, aby uzyskać dostęp do jego "członków". W tym przykładzie person.firstName zwraca John :

Obiekt:

var person = {firstName:"John", lastName:"Doe", age:46};
Spróbuj sam "

Właściwości i metody Array

Prawdziwa siła tablice JavaScript są wbudowanej tablicy właściwości i metod:

Przykłady

var x = cars.length;         // The length property returns the number of elements in cars
var y = cars.sort();         // The sort() method sort cars in alphabetical order

Metody tablicowe są ujęte w następnym rozdziale.


Długość nieruchomości

length własnością tablicy zwraca długość tablicy (liczba elementów tablicy).

Przykład

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length;                       // the length of fruits is 4
Spróbuj sam "

Właściwość długość jest zawsze o jeden więcej niż najwyższy indeks tablicy.


Dodawanie elementów macierzy

Najprostszym sposobem, aby dodać nowy element do tablicy jest przy użyciu metody dostarczania:

Przykład

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon");                // adds a new element (Lemon) to fruits
Spróbuj sam "

Nowy element może być również dodana do matrycy przy użyciu length właściwość:

Przykład

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon";     // adds a new element (Lemon) to fruits
Spróbuj sam "

OSTRZEŻENIE !

Dodawanie elementów o wysokich indeksach mogą tworzyć niezdefiniowanych "holes" w tablicy:

Przykład

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[10] = "Lemon";                // adds a new element (Lemon) to fruits
Spróbuj sam "

Zapętlenie Elements Array

Najlepszym sposobem na pętli tablicy, jest za pomocą "for" pętli:

Przykład

var fruits, text, fLen, i;

fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
    text += "<li>" + fruits[i] + "</li>";
}
Spróbuj sam "

asocjacyjnych

Wiele języków programowania obsługują macierze z wymienionych indeksów.

Tablice z wymienionych indeksów nazywane są tablice asocjacyjne (lub skrótów).

JavaScript nie obsługuje macierze z wymienionych indeksów.

W JavaScript, tablice zawsze używać indeksów policzone.

Przykład

var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length;         // person.length will return 3
var y = person[0];             // person[0] will return "John"
Spróbuj sam "

OSTRZEŻENIE !!
Jeśli używasz nazwie indeks, JavaScript będzie przedefiniować tablicę do standardowego obiektu.
Po tym, wszystkie metody i właściwości tablicy będzie produkować nieprawidłowych wyników.

Przykład:

var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length;         // person.length will return 0
var y = person[0];             // person[0] will return undefined
Spróbuj sam "

Różnica między tablice i obiekty

W JavaScript, tablice używać indeksów policzone.

W JavaScript, obiekty używać nazwanych indeksów.

Tablice są specjalnym rodzajem obiektów, z indeksami policzone.


Kiedy używać tablic. Kiedy używać obiektów.

  • JavaScript nie obsługuje tablic asocjacyjnych.
  • Należy używać obiektów gdy chcesz nazw elementów za sznurki (tekst).
  • Należy użyć tablic kiedy chcesz nazw elementów, aby być liczbami.

Unikać new Array()

Nie ma potrzeby korzystania z wbudowanego konstruktora Array JavaScript w new Array() .

Użyj [] zamiast.

Te dwa różne oświadczenia zarówno utworzyć nową pustą tablicą nazwanych punktów:

var points = new Array();         // Bad
var points = [];                  // Good 

Te dwa różne oświadczenia obu utworzyć nową tablicę zawierającą 6 liczb:

var points = new Array(40, 100, 1, 5, 25, 10)  // Bad
var points = [40, 100, 1, 5, 25, 10];          // Good
Spróbuj sam "

new kluczowe komplikuje tylko kod. Może to także powodować pewne nieoczekiwane wyniki:

var points = new Array(40, 100);  // Creates an array with two elements (40 and 100)

Co zrobić, jeśli mogę usunąć jeden z elementów?

var points = new Array(40);       // Creates an array with 40 undefined elements !!!!!
Spróbuj sam "

Jak rozpoznać tablicę

Częstym pytaniem jest: Jak mogę sprawdzić, czy zmienna jest tablicą?

Problem polega na tym, że operator JavaScript typeof zwraca "obiekt":

var fruits = ["Banana", "Orange", "Apple", "Mango"];

typeof fruits;             // returns object
Spróbuj sam "

Powraca typeof operator obiektu, ponieważ tablica JavaScript jest obiektem.

Roztwór 1:

Aby rozwiązać ten problem ECMAScript 5 określa nową metodę Array.isArray() :

Array.isArray(fruits);     // returns true
Spróbuj sam "

Problem z tym rozwiązaniem jest to, że ECMAScript 5 nie jest obsługiwany w starszych przeglądarkach.

Roztwór 2:

Aby rozwiązać ten problem, można utworzyć własne isArray() funkcję:

function isArray(x) {
    return x.constructor.toString().indexOf("Array") > -1;
}
Spróbuj sam "

Funkcja wyżej zawsze zwraca true, jeśli argument jest tablicą.

Albo dokładniej: zwraca true jeśli prototyp obiektu zawiera słowo "Array".

Rozwiązanie 3:

instanceof operator zwraca true, jeśli obiekt jest tworzony przez danego konstruktora:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits instanceof Array     // returns true
Spróbuj sam "

Sprawdź się z ćwiczeń!

Ćwiczenie 1 » Ćwiczenie 2» Ćwiczenie 3 » Ćwiczenia 4» Zadanie 5 »