Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O método reduceRight() aplica à uma função um acumulador e cada valor do array (da direita para esquerda) é reduzido para um valor único.
Função para executar em cada valor do array, recebendo quatro argumentos:
previousValueO valor anteriormente retornado na ultima invocação do callback, ou o initialValue, se este for o recebido. (Ver abaixo.)
currentValueO valor atualmente sendo processado no array.
indexO índice do valor atualmente sendo processado no array.
arrayO array que foi chamado para ser reduzido.
initialValueOpcional. Objeto para ser usado como argumento inicial da primeria chamada do callback.
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:
A primeira vez que a função é chamada, o previousValue e o currentValue podem ser um de dois valores. Se um initialValue foi recebido na chamada do reduceRight, então o previousValue sera iqual ao initialValue e o currentValue será igual ao ultimo valor no array. Se o initialValue não foi recebido, então o previousValue será igual ao ultimo valor no array e o currentValue será igual ao penultimo valor no array.
Se o array é vazio e nenhum initialValue foi recebido, TypeError será lançado. Se o array somente tem um elemento (independentemente da posição dele) e o initialValue não foi recebido, ou se o initialValue foi recebido mas o array é vazio, o valor em si será retornado sem chamar o callback.
Alguns exemplos de execuções da função e como será parecida a chamada:
O callback será invocado quatro vezes, com os argumentos e valores de retornos em cada chamada será como o seguinte:
| Primeira chamada | 4 | 3 | 3 | [0, 1, 2, 3, 4] | 7 |
| Segunda chamada | 7 | 2 | 2 | [0, 1, 2, 3, 4] | 9 |
| Terceira chamada | 9 | 1 | 1 | [0, 1, 2, 3, 4] | 10 |
| Quarta chamada | 10 | 0 | 0 | [0, 1, 2, 3, 4] | 10 |
O valor retornado pelo reduceRight será o valor retornado pela ultima chamada ao callback(10).
E se você também passou um initialValue, o resultado irá ser como a seguir:
| Primeira chamada | 10 | 4 | 4 | [0, 1, 2, 3, 4] | 14 |
| Segunda chamada | 14 | 3 | 3 | [0, 1, 2, 3, 4] | 17 |
| Terceira chamada | 17 | 2 | 2 | [0, 1, 2, 3, 4] | 19 |
| Quarta chamada | 19 | 1 | 1 | [0, 1, 2, 3, 4] | 20 |
| Quinta chamada | 20 | 0 | 0 | [0, 1, 2, 3, 4] | 20 |
O valor retornado pelo reduceRight desta vez será, obviamente, 20.
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 do reduceRight em implementações que não o suportam nativamente.
| ECMAScript® 2027 Language Specification # sec-array.prototype.reduceright |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 24 de jun. de 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.