Olá,
Estava fazendo alguns teste com reduce() e fiquei com a seguinte duvida, poque quando estou tentando somar os valores de um array de objetos tenho que passar o valor inicial de total e quando utilizo um array "simples" não?
Pra ficar mais claro, segue os testes:
1) Array
var total = [0, 1, 2, 3].reduce((a, b) => a + b);
console.log(total);
//6
2)Array de objetos
let usuarios = [
{nome: 'User 1', email: 'user1@gmail.com', idade: 24, gasto: 50},
{nome: 'User 2', email: 'user2@gmail.com', idade: 21, gasto: 60},
{nome: 'User 3', email: 'user3@gmail.com', idade: 24, gasto: 70}
];
let totalGastoUsuario = usuarios.reduce((total, usuario) => total + usuario.gasto, 0.0);
console.log(totalGastoUsuario);
//180
3)Array de objetos sem o valor inicial do total
let usuarios = [
{nome: 'User 1', email: 'user1@gmail.com', idade: 24, gasto: 50},
{nome: 'User 2', email: 'user2@gmail.com', idade: 21, gasto: 60},
{nome: 'User 3', email: 'user3@gmail.com', idade: 24, gasto: 70}
];
let totalGastoUsuario = usuarios.reduce((total, usuario) => total + usuario.gasto);
console.log(totalGastoUsuario);
//[object Object]6070
Aparentemente ele concatena tudo (apesar dele ignorar o primeiro valor), mas estranho que quando utilizo um array somente com números ele soma tudo corretamente, isso ocorre justamente porque estou lidando com objetos?
Agradeço atenção desde ja!