Repozytorium Web Developera

Archiwum z lat 2013-2018, treści mogą być nieaktualne.

JavaScript - tablice Array

Tablice Array

Dobre praktyki

Iterowanie po tablicy

Aby uzyskać najlepszą wydajność zaleca się, aby zawsze używać zwykłej pętli for i zbuforować właściwość length. Korzystanie z pętli for in na tablicy jest oznaką źle napisanego kodu, który jest podatny na błędy i ma słabą wydajność.
Nowsze przeglądarki już automatycznie optymalizują i buforują właściwość length.

Konstruktor

W przypadku, gdy tylko jeden argument zostanie przekazany do kostruktora Array i ten argument jest typu Number, konstruktor zwróci nową dziwną tablicę z właściwością length ustawioną na wartość przekazaną jako argument. Należy zauważyć, że tylko właściwość length zostanie ustawiona w ten sposób. Rzeczywiste indeksy w tej tablicy nie zostaną zainicjalizowane.


[1, 2, 3];                // Rezultat: [1, 2, 3]
new Array(1, 2, 3);       // Rezultat: [1, 2, 3]

[3];                      // Rezultat: [3]
new Array(3);             // Rezultat: []
new Array('3')            // Rezultat: ['3']

Metody tablic Array

  • Standard built-in objects: Array on Mozilla Developer Network
  • Mapowanie Array.prototype.map()

    Poniższy kod:

    
    var max = 7;
    var arr = Array.apply(null, {length: max}).map(Number.call, Number);
    

    Jest odpowiednikiem:

    
    var arr = [];
    var max = 7;
    for (var i = 0; i < max; i++) {
        arr.push(i);
    }
    

    Metoda Array.prototype.map() od Array.prototype.forEach() różni się tym, że zwraca tablicę, a forEach() nie zwraca nic (jest metodą wbudowaną w obiekt i działa na nim).

    Iterowanie Array.prototype.forEach()

    Jest to metoda wbudowana w obiekt tablicy i działa bezpośrednio na nim, nie zwracając nowej tablicy - obiektu. Metoda, która zwraca nowy obiekt - tablicę, to metoda map().

    Akumulowanie Array.prototype.reduce()

    Metoda redukuje tablice do pierwszego argumentu funkcji zwrotnej.

    var sum = [1, 2, 3].reduce(function(total, num) { return total + num }, 0);
    

    Filtrowanie Array.prototype.filter()

    Metoda zwraca tablicę elementów pierwotnej tablicy, które spełniają warunek przekazany w funkcji.

    Chociaż jeden prawdziwy Array.prototype.some()

    Metoda ta zwraca prawdę, jeżeli chociaż jeden element tablicy spełnia warunek przekazany w funkcji zwrotnej. Zwraca fałsz, jeśli żaden z elementów tablicy nie spełnia warunku.

    Wszystkie prawdziwe Array.prototype.every()

    Metoda ta zwraca prawdę, jeśli wszystkie elementy tablicy spełniają warunek przekazany w funkcji zwrotnej. Jeśli chociaż jeden element nie spełnia warunku, zwracany jest fałsz.

    ECMAScript 6+

    Array.from

    Tworzy tablicę z obiektu iterable lub podobnego do tablicy (np. string).

    Array.smoosh / Array.flatten

    Z wielu tablic tworzy jedną tablicę.