JavaScript - Necesito ayuda

 
Vista:
sin imagen de perfil

Necesito ayuda

Publicado por El Perla (40 intervenciones) el 05/10/2021 20:09:09
Buenas noches, necesito ayuda con un ejercicio, me piden devolver el resultado de sumar los elementos de un array de números usando el método .reduce, ¿cómo podría hacerlo? Lo que tengo hecho es:

1
2
3
4
5
6
7
8
9
10
function suma(v){
    const resultado = 0;
    v.reduce((valorAnterior, valorActual, i) => {
        resultado[i] = valorAnterior + valorActual;
    });
    return resultado;
}
const v = [3, 7, 10, 30];
let resulReduce = suma(v);
console.log(resulReduce);

Pero siempre me da 0 como resultado, ¿qué hago mal?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 9
Ha disminuido su posición en 4 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Necesito ayuda

Publicado por Sergio (5 intervenciones) el 05/10/2021 20:43:57
Checa este ejemplo para que te des cuenta que 3stas haciendo mal.

reducer = (previousValue, currentValue) => previousValue + currentValue;

// 1 + 2 + 3 + 4
console. array1 = [1, 2, 3, 4];
const reducer = (previousValue, currentValue) => previousValue + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda

Publicado por El Perla (40 intervenciones) el 05/10/2021 21:40:12
No consigo ver mi error, que es lo que haces al principio con reducer?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Necesito ayuda

Publicado por 7aamin (79 intervenciones) el 05/10/2021 21:41:56
Es asi de facil, debes declarar una funcion que sea el reductor...
1
2
let arr = [1,2,3,4,5,6]
let _reducer = (prev, current) => prev + current;

Y luego le aplicas el metodo reducer al array usando como parametro el reductor que creaste:
1
2
3
let result = arr.reduce(_reducer)
console.log(result)
//Resultado 21
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Necesito ayuda

Publicado por Alejandro (40 intervenciones) el 05/10/2021 21:46:01
¿A eso de prev y current que valores debe darsele? ¿O son palabras reservadas?
¿La función reductora debe estar al inicio del programa, dentro de la función o al final?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Necesito ayuda

Publicado por 7aamin (79 intervenciones) el 05/10/2021 21:56:29
Lo que hace reducer() es tomar siempre el primero valor del array (que sera prev o como tu quieras llamarlo) y luego tomara el siguiente (que sera current o como tu quieras llamarlo)
1
2
3
4
5
let arr = [1,2,3,4,5,6]
let _reducer = (primerValor, siguienteValor) => primerValor + siguienteValor;
let result = arr.reduce(_reducer);
console.log(result)
//Resultado 21

Lo que hace reducer es:
toma 1 y 2... los suma (Dando 3) y lo agrega al inicio del array quedando asi [3,3,4,5,6]
luego hace lo mismo otra vez toma 3 y 3 dando 6, lo agrega al inicio quedando asi [6,4,5,6]
luego quedaria [10,5,6]
luego quedaria [15,6]
luego [21]
y como ya no vay mas elementos en el array, te devuelve el resultado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Necesito ayuda

Publicado por Alejandro (40 intervenciones) el 05/10/2021 21:59:30
Entonces entiendo que son palabras que se ponen por defecto por el significado de lo que realizan pero que se podrian llamar perfectamente "x" y "w" o lo que fuese, no? Reduce siempre va a realizar esa funcion independientemente de lo que se pongra entre sus parentesis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Necesito ayuda

Publicado por 7aamin (79 intervenciones) el 05/10/2021 22:05:26
Tu puedes llamar a los parametros como tu quieras... pero reduce() siempre reemplazara el primer parametro con el primer elemento del array y el segundo parametro con el segundo elemento del array y con esos dos valores, realizara la operacion que este dentro de la funcion reducer que hayas creado.

Por ejemplo:

1
2
3
4
5
let arr = [1, 2, 15, "Pepito"]
let otroReducer = (x, y) => { return x.toString() + y.toString() }
let result = arr.reduce(otroReducer);
console.log(result)
//resultado 1215Pepito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar