Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Objetos Globais
  5. Array
  6. Array.prototype.reduceRight()

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

Array.prototype.reduceRight()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julho de 2015⁩.

Sumário

O métodoreduceRight() aplica à uma função um acumulador e cada valor do array (da direita para esquerda) é reduzido para um valor único.

Sintaxe

arr.reduceRight(callback[, initialValue])

Parâmetros

callback

Função para executar em cada valor do array, recebendo quatro argumentos:

previousValue

O valor anteriormente retornado na ultima invocação do callback, ou oinitialValue, se este for o recebido. (Ver abaixo.)

currentValue

O valor atualmente sendo processado no array.

index

O índice do valor atualmente sendo processado no array.

array

O array que foi chamado para ser reduzido.

initialValue

Opcional. Objeto para ser usado como argumento inicial da primeria chamada do callback.

Descrição

reduceRight executa a função callback uma vez para cada elemento presente no array, excluindo buracos no array, recebendo quatro argumentos: o valor inicial (ou o valor da chamada anterior do callback), o valor do elemento atual, o índice do elemento atual, e o array onde a operação está acontecendo.

A chamada ao callback reduceRight irá parecer com uma chamada assim:

js
array.reduceRight(function (previousValue, currentValue, index, array) {  // ...});

A primeira vez que a função é chamada, opreviousValue e ocurrentValue podem ser um de dois valores. Se uminitialValue foi recebido na chamada doreduceRight, então opreviousValue sera iqual aoinitialValue e ocurrentValue será igual ao ultimo valor no array. Se oinitialValue não foi recebido, então opreviousValue será igual ao ultimo valor no array e ocurrentValue será igual ao penultimo valor no array.

Se o array é vazio e nenhuminitialValue foi recebido,TypeError será lançado. Se o array somente tem um elemento (independentemente da posição dele) e oinitialValue não foi recebido, ou se oinitialValue foi recebido mas o array é vazio, o valor em si será retornado sem chamar ocallback.

Alguns exemplos de execuções da função e como será parecida a chamada:

js
[0, 1, 2, 3, 4].reduceRight(  function (previousValue, currentValue, index, array) {    return previousValue + currentValue;  },);

O callback será invocado quatro vezes, com os argumentos e valores de retornos em cada chamada será como o seguinte:

previousValuecurrentValueindexarrayreturn value
Primeira chamada433[0, 1, 2, 3, 4]7
Segunda chamada722[0, 1, 2, 3, 4]9
Terceira chamada911[0, 1, 2, 3, 4]10
Quarta chamada1000[0, 1, 2, 3, 4]10

O valor retornado peloreduceRight será o valor retornado pela ultima chamada ao callback(10).

E se você também passou uminitialValue, o resultado irá ser como a seguir:

js
[0, 1, 2, 3, 4].reduceRight(function (  previousValue,  currentValue,  index,  array,) {  return previousValue + currentValue;}, 10);
previousValuecurrentValueindexarrayreturn value
Primeira chamada1044[0, 1, 2, 3, 4]14
Segunda chamada1433[0, 1, 2, 3, 4]17
Terceira chamada1722[0, 1, 2, 3, 4]19
Quarta chamada1911[0, 1, 2, 3, 4]20
Quinta chamada2000[0, 1, 2, 3, 4]20

O valor retornado peloreduceRight desta vez será, obviamente,20.

Exemplos

Exemplo: Somando todos os valores presente em um array

js
var total = [0, 1, 2, 3].reduceRight(function (a, b) {  return a + b;});// total == 6

Exemplo: Juntando um array de arrays

js
var flattened = [  [0, 1],  [2, 3],  [4, 5],].reduceRight(function (a, b) {  return a.concat(b);}, []);// flattened is [4, 5, 2, 3, 0, 1]

Polyfill

reduceRight foi adicionado no padrão ECMA-262 em sua Quinta edição; sendo assim pode não estar presente em todas as implementações deste padrão. Você pode contornar isso adicionando o seguinte codigo ao inicio do seu script, adicionando a possibilidade de uso doreduceRight em implementações que não o suportam nativamente.

js
// Production steps of ECMA-262, Edition 5, 15.4.4.22// Reference: http://es5.github.io/#x15.4.4.22if ("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;  };}

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.reduceright

Compatibilidade com os navegadores

Ver também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp