Redukowanie tablicy do wartości - reduce
Jak zredukować tablicę do pojedynczej prostej wartości?
(interpretuje: Internet Explorer 9, Firefox, Opera 10.50, Chrome)
Array.prototype.reduce(callbackfn) Array.prototype.reduce(callbackfn, initialValue)
- Parametry:
Function
callbackfn - funkcja zwracająca zredukowaną wartość i przyjmująca argumenty:- accumulator - dotychczasowa zredukowana wartość
- kValue - element tablicy
Number
k - indeks elementu tablicyArray
O - oryginalna tablica
- initialValue - wartość początkowa (domyślnie: element o najniższym indeksie jawnie dodanym do tablicy)
- Wartość:
- zredukowana wartość tablicy
- Wyjątki:
TypeError
- callbackfn nie jest funkcją albo nie podano initialValue podczas gdy do tablicy nie dodano jawnie żadnych elementów
Przechodzi kolejno przez wszystkie elementy tablicy, redukując ją do pojedynczej wartości. Elementy, które nie zostały jawnie dodane do tablicy, są pomijane.
Pozwala obliczyć np. silnię lub sumę wszystkich elementów tablicy.
Przykład Array.prototype.reduce
var items = [3, 2, 1]; var f = function (a, x) { a += x; return a; }; items.reduce(f, 0); // 6 var GreaterThan = function (value) { this.value = value; this.tests = 0; }; GreaterThan.prototype.test = function (sum, value) { ++this.tests; if (value > this.value) sum += value; return sum; }; tester = new GreaterThan(1); f = tester.test.bind(tester); items.reduce(f); // 5 tester.tests; // 2 tester = new GreaterThan(1); f = tester.test.bind(tester); items.reduce(f, 0); // 5 tester.tests; // 3 items = [1, 2]; items[3] = 3; items.length; // 4 tester = new GreaterThan(0); f = tester.test.bind(tester); items.reduce(f, 0); // 6 tester.tests; // 3 items[2] = undefined; items.length; // 4 tester = new GreaterThan(0); f = tester.test.bind(tester); items.reduce(f, 0); // 6 tester.tests; // 4 items.reduce(null); // TypeError items.reduce(undefined); // TypeError items.reduce({}); // TypeError [].reduce(f); // TypeError new Array(3).reduce(f); // TypeError