No puedo ver por qué esta función regresa indefinida:

function sumArray(array) {
  array.reduce(function(result, item) {
    return result + item;
  })
}

array = [1,2,3]

sumArray(array)

He intentado algo similar y funciona bien (a continuación), así que no estoy seguro de si es específico para el parámetro que es una matriz.

function sayNumber(num) {
 return num + 1;
} 

num = 1

sayNumber(num)
0
safikabis 29 oct. 2017 a las 17:02

4 respuestas

La mejor respuesta

Lo que realmente necesita es agregar una declaración return más.

function sumArray(array) {
  //here
  return array.reduce(function(result, item) {
    return result + item;
  });
}

array = [1,2,3];

sumArray(array);
//6
2
Ivan Kalita 29 oct. 2017 a las 14:04

Devuelve undefined porque no hay una declaración de retorno para la función sumArray.

(La función anónima que pasa a reduce tiene una, pero esa es una función diferente).

Si desea devolver el resultado de llamar a array.reduce cuando tiene que decirlo explícitamente:

return array.reduce(etc, etc…
0
Quentin 29 oct. 2017 a las 14:04

Debería devolver el valor de la función sumArray Así:

function sumArray(array) {
  return array.reduce(function(result, item) {
    return result + item;
  })
}
0
James Pham 29 oct. 2017 a las 14:09

La función sumArray no devuelve el resultado de array.reduce. Inserte un return antes de su array.reduce.

0
André Glatzl 29 oct. 2017 a las 14:04