Baseline Widely available
СводкаÐеÑод reduceRight()
пÑименÑÐµÑ ÑÑнкÑÐ¸Ñ Ðº аккÑмÑлÑÑоÑÑ Ð¸ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива (ÑпÑава-налево), ÑÐ²Ð¾Ð´Ñ ÐµÐ³Ð¾ к Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ.
arr.reduceRight(callback[, initialValue])ÐаÑамеÑÑÑ
callback
ФÑнкÑиÑ, вÑполнÑÑÑаÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа маÑÑива, пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑеÑÑÑе аÑгÑменÑа:
previousValue
ÐнаÑение, возвÑаÑÑнное пÑедÑдÑÑим вÑполнением ÑÑнкÑии callback
, либо знаÑение initialValue
, еÑли оно пÑедоÑÑавлено (ÑмоÑÑиÑе поÑÑÐ½ÐµÐ½Ð¸Ñ Ð½Ð¸Ð¶Ðµ).
currentValue
ТекÑÑий обÑабаÑÑваемÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива.
index
ÐÐ½Ð´ÐµÐºÑ ÑекÑÑего обÑабаÑÑваемого ÑлеменÑа маÑÑива.
array
ÐаÑÑив, Ð´Ð»Ñ ÐºÐ¾ÑоÑого бÑла вÑзвана ÑÑнкÑÐ¸Ñ reduceRight
.
initialValue
ÐеобÑзаÑелÑнÑй паÑамеÑÑ. ÐбÑекÑ, иÑполÑзÑемÑй в каÑеÑÑве пеÑвого аÑгÑменÑа пÑи пеÑвом вÑзове ÑÑнкÑии callback
.
ÐеÑод reduceRight()
вÑполнÑÐµÑ ÑÑнкÑÐ¸Ñ callback
один Ñаз Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа, пÑиÑÑÑÑÑвÑÑÑего в маÑÑиве, за иÑклÑÑением пÑÑÑоÑ, пÑÐ¸Ð½Ð¸Ð¼Ð°Ñ ÑеÑÑÑе аÑгÑменÑа: наÑалÑное знаÑение (или знаÑение Ð¾Ñ Ð¿ÑедÑдÑÑего вÑзова callback
), знаÑение ÑекÑÑего ÑлеменÑа, ÑекÑÑий Ð¸Ð½Ð´ÐµÐºÑ Ð¸ маÑÑив, по коÑоÑÐ¾Ð¼Ñ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¸ÑеÑаÑиÑ.
ÐÑзов колбÑк-ÑÑнкÑии callback
бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ñак:
array.reduceRight(function (previousValue, currentValue, index, array) {
// ...
});
ÐÑи пеÑвом вÑзове ÑÑнкÑии, паÑамеÑÑÑ previousValue
и currentValue
могÑÑ Ð¿ÑинимаÑÑ Ð¾Ð´Ð½Ð¾ из двÑÑ
знаÑений. ÐÑли пÑи вÑзове reduceRight()
пеÑедан аÑгÑÐ¼ÐµÐ½Ñ initialValue
, Ñо знаÑение previousValue
бÑÐ´ÐµÑ ÑавнÑм знаÑÐµÐ½Ð¸Ñ initialValue
, а знаÑение currentValue
бÑÐ´ÐµÑ ÑавнÑм поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² маÑÑиве. ÐÑли аÑгÑÐ¼ÐµÐ½Ñ initialValue
не задан, Ñо знаÑение previousValue
бÑÐ´ÐµÑ ÑавнÑм поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² маÑÑиве, а знаÑение currentValue
бÑÐ´ÐµÑ ÑавнÑм вÑоÑÐ¾Ð¼Ñ Ñ ÐºÐ¾Ð½Ñа знаÑÐµÐ½Ð¸Ñ Ð² маÑÑиве.
ÐÑли маÑÑив пÑÑÑой и аÑгÑÐ¼ÐµÐ½Ñ initialValue
не Ñказан, бÑÐ´ÐµÑ Ð±ÑоÑено иÑклÑÑение TypeError
. ÐÑли маÑÑив ÑоÑÑÐ¾Ð¸Ñ ÑолÑко из одного ÑлеменÑа (незавиÑимо Ð¾Ñ ÐµÐ³Ð¾ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² маÑÑиве) и аÑгÑÐ¼ÐµÐ½Ñ initialValue
не Ñказан, или еÑли аÑгÑÐ¼ÐµÐ½Ñ initialValue
Ñказан, но маÑÑив пÑÑÑой, Ñо бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑено одно ÑÑо знаÑение, без вÑзова ÑÑнкÑии callback
.
ÐÐ¾Ñ Ñак бÑдÑÑ Ð²ÑглÑдеÑÑ Ð½ÐµÐºÐ¾ÑоÑÑй пÑимеÑÑ Ð¿Ñогона ÑÑнкÑии:
[0, 1, 2, 3, 4].reduceRight(
function (previousValue, currentValue, index, array) {
return previousValue + currentValue;
},
);
ÐолбÑк-ÑÑнкÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²Ñзвана ÑеÑÑÑе Ñаза, аÑгÑменÑÑ Ð¸ возвÑаÑаемое знаÑение пÑи каждом вÑзове бÑдÑÑ ÑледÑÑÑими:
previousValue
currentValue
index
array
возвÑаÑаемое знаÑение пеÑвÑй вÑзов 4
3
3
[0, 1, 2, 3, 4]
7
вÑоÑой вÑзов 7
2
2
[0, 1, 2, 3, 4]
9
ÑÑеÑий вÑзов 9
1
1
[0, 1, 2, 3, 4]
10
ÑеÑвÑÑÑÑй вÑзов 10
0
0
[0, 1, 2, 3, 4]
10
ÐнаÑение, возвÑаÑÑнное меÑодом reduceRight()
бÑÐ´ÐµÑ ÑавнÑм поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ ÑезÑлÑÑаÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð±Ñк-ÑÑнкÑии â 10
.
ÐÑли же Ð²Ñ Ð·Ð°Ð´Ð°Ð´Ð¸Ñе наÑалÑное знаÑение initialValue
, ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ñак:
[0, 1, 2, 3, 4].reduceRight(function (
previousValue,
currentValue,
index,
array,
) {
return previousValue + currentValue;
}, 10);
previousValue
currentValue
index
array
возвÑаÑаемое знаÑение пеÑвÑй вÑзов 10
4
4
[0, 1, 2, 3, 4]
14
вÑоÑой вÑзов 14
3
3
[0, 1, 2, 3, 4]
17
ÑÑеÑий вÑзов 17
2
2
[0, 1, 2, 3, 4]
19
ÑеÑвÑÑÑÑй вÑзов 19
1
1
[0, 1, 2, 3, 4]
20
пÑÑÑй вÑзов 20
0
0
[0, 1, 2, 3, 4]
20
ÐнаÑение, возвÑаÑÑнное меÑодом reduceRight()
на ÑÑÐ¾Ñ Ñаз, конеÑно же, бÑÐ´ÐµÑ ÑавнÑм 20
.
var total = [0, 1, 2, 3].reduceRight(function (a, b) {
return a + b;
});
// total == 6
ÐÑимеÑ: ÑазвоÑаÑивание маÑÑива маÑÑивов
var flattened = [
[0, 1],
[2, 3],
[4, 5],
].reduceRight(function (a, b) {
return a.concat(b);
}, []);
// flattened Ñавен [4, 5, 2, 3, 0, 1]
ÐолиÑил
ÐеÑод Array.prototype.reduceRight()
бÑл добавлен к ÑÑандаÑÑÑ ECMA-262 в 5-м издании; поÑÑÐ¾Ð¼Ñ Ð¾Ð½ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑÑÑÑÑвоваÑÑ Ð² дÑÑгиÑ
ÑеализаÑиÑÑ
ÑÑандаÑÑа. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑабоÑаÑÑ Ñ Ð½Ð¸Ð¼, добавив ÑледÑÑÑий код в наÑало ваÑиÑ
ÑкÑипÑов, он позволÑÐµÑ Ð¸ÑполÑзоваÑÑ reduceRight()
в ÑеализаÑиÑÑ
, коÑоÑÑе не поддеÑживаÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑод.
// Шаги алгоÑиÑма ECMA-262, 5-е издание, 15.4.4.22
// СÑÑлка (en): http://es5.github.io/#x15.4.4.22
// СÑÑлка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.22
if ("function" !== typeof Array.prototype.reduceRight) {
Array.prototype.reduceRight = function (callback /*, initialValue*/) {
"use strict";
if (null === this || "undefined" === typeof this) {
throw new TypeError("Array.prototype.reduce called on null or undefined");
}
if ("function" !== typeof callback) {
throw new TypeError(callback + " is not a function");
}
var t = Object(this),
len = t.length >>> 0,
k = len - 1,
value;
if (arguments.length >= 2) {
value = arguments[1];
} else {
while (k >= 0 && (!k) in t) {
k--;
}
if (k < 0) {
throw new TypeError("Reduce of empty array with no initial value");
}
value = t[k--];
}
for (; k >= 0; k--) {
if (k in t) {
value = callback(value, t[k], k, t);
}
}
return value;
};
}
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4