Przejdź do treści

Operacje na tablicach w JavaScript - Array.prototype - JS

Iterowanie po elementach tablicy - forEach

W jaki sposób przejść kolejno po wszystkich elementach tablicy?

(interpretuje: Internet Explorer 9, Firefox, Opera, Chrome)

Array.prototype.forEach(callbackfn)
Array.prototype.forEach(callbackfn, thisArg)
Parametry:
Function callbackfn - funkcja zwrotna przyjmująca argumenty:
  • kValue - element tablicy
  • Number k - indeks elementu tablicy
  • Array O - oryginalna tablica
thisArg - wartość bieżącego obiektu this dostępnego w czasie wywołania wewnątrz ciała funkcji (domyślnie: undefined)
Wyjątki:
TypeError - callbackfn nie jest funkcją

Pozwala przejrzeć kolejno wszystkie elementy tablicy. Elementy, które nie zostały jawnie dodane do tablicy, są pomijane.

Nie ma możliwości przerwania w rozsądny sposób przeglądania tablicy przed jej końcem. W takim przypadku lepiej użyć pętli for albo ewentualnie funkcji Array.prototype.some bądź Array.prototype.every.

Przykład Array.prototype.forEach

var items = [3, 2, 1];
 
var sum = 0;
var f = function (x) {
    sum += x;
};
items.forEach(f);
sum;                      // 6;
 
var GreaterThan = function (value) {
    this.value = value;
    this.tests = 0;
    this.sum = 0;
};
GreaterThan.prototype.test = function (value) {
    ++this.tests;
    if (value > this.value) {
        this.sum += value;
        return true;
    }
    return false;
};
 
var tester = new GreaterThan(0);
items.forEach(tester.test, tester);
tester.sum;               // 6
 
tester = new GreaterThan(1);
items.forEach(tester.test, tester);
tester.sum;               // 5
 
// Przerwanie pętli w trakcie:
tester = new GreaterThan(2);
items.every(tester.test, tester);
tester.sum;               // 3
tester.tests;             // 2
 
items = [1, 2];
items[3] = 3;
items.length;             // 4
tester = new GreaterThan(0);
items.forEach(tester.test, tester);
tester.sum;               // 6
tester.tests;             // 3
 
items[2] = undefined;
items.length;             // 4
tester = new GreaterThan(0);
items.forEach(tester.test, tester);
tester.sum;               // 6
tester.tests;             // 4
 
items.forEach(null);      // TypeError
items.forEach(undefined); // TypeError
items.forEach({});        // TypeError

Komentarze

Zobacz więcej komentarzy

Facebook