Skip to content

Instantly share code, notes, and snippets.

@kelvysmoura
Last active June 15, 2018 02:43
Show Gist options
  • Save kelvysmoura/dfdb5a5e0ba9b166d1d680510b772b04 to your computer and use it in GitHub Desktop.
Save kelvysmoura/dfdb5a5e0ba9b166d1d680510b772b04 to your computer and use it in GitHub Desktop.
ECMAScript 6 - reduce()

ECMAScript 6 - reduce()

Método reduce()

Sintaxe:

yourArray.reduce(function(p1, p2, p3, p4){
    // your code 
}, p1_start);
  • reduce() é usada para encontrar valor cumulativo ou agrupar baseado em itens do array

    • p1: Função callback
    • p2: Valor inicial do primeiro parametro do callback
  • Função de callback retorna 4 parâmetros

    • p1: O acumulo de cada interação com os itens do array
    • p2: Os itens do array
    • p3: As chaves do array
    • p3: O array que foi passado
  • Antes do método reduce() poderia obter o mesmo resultado com o método for()

Mostrando com for() o total de gastos

Exemplo com método for()

// Gastos de janeiro a junho
var gastos = [220, 540, 600, 150, 457, 391];

var total = 0;
for(var i = 0; i< gastos.length; i++){
  total += gastos[i];
}
console.log(total);

/*
resultado
2358
*/

Mostrando com reduce() o total de gastos

Exemplo com método reduce()

// USANDO O MESMO ARRAY DE GASTOS DO EXEMPLO COM for()

var total = gastos.reduce(function(p1, p2){
  return p1 + p2;
}, 0);
console.log(total);

/*
resultado
2358
*/

reduce exemplo 2 - mostrar os titulos de todos os livros

Exemplo 2 com método reduce()

var livros = [
  {categoria: 'Biografia', nome: 'Steve Jobs', autor: 'Walter Isaacson'},
  {categoria: 'Biografia', nome: 'Elon Musk', autor: 'Ashlee Vance'},
  {categoria: 'Economia', nome: 'As Seis Lições', autor: 'Ludwig Von Mises'},
  {categoria: 'Economia', nome: 'Ação Humana', autor: 'Ludwig Von Mises'},
  {categoria: 'Economia', nome: 'O livre mercado e seus inimigos', autor: 'Ludwig Von Mises'}
];

var titulos = livros.reduce(function(p1, p2){
  p1.push(p2.nome);
  return p1;
}, []);
console.log(titulos);

Testar codigo no repl.it


Gitter Gitter Gitter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment