tablas - Javascript reducir una matriz vacía
reduce js (2)
Ambos comportamientos son de acuerdo a la especificación .
No puede reduce
una matriz vacía a menos que proporcione explícitamente un valor inicial "acumulado" como segundo argumento:
Si no se proporcionó initialValue, previousValue será igual al primer valor de la matriz y currentValue será igual al segundo. Es un error TypeError si la matriz no contiene elementos y initialValue no se proporciona.
Si la matriz tiene al menos un elemento, proporcionar un valor inicial es opcional. Sin embargo, si no se proporciona uno, el primer elemento de la matriz se utiliza como valor inicial y reduce
continúa procesando el resto de los elementos de la matriz invocando su devolución de llamada. En su caso, la matriz solo contiene un único elemento, por lo que ese elemento se convierte en el valor inicial y también en el valor final, ya que no hay más elementos que procesar a través de la devolución de llamada.
Cuando reduzco la matriz, trato de obtener el número cero, pero no entiendo claramente el comportamiento de la función
[].reduce(function(previousValue, currentValue){
return Number(previousValue) + Number(currentValue);
});
resultado
TypeError: Reduce of empty array with no initial value
Parece que si la matriz está vacía no puedo reducirla.
[""].reduce(function(previousValue, currentValue){
return Number(previousValue) + Number(currentValue);
});
resultado
""
Si el único elemento de la matriz es una cadena vacía, recupera una cadena vacía
El segundo parámetro es para el valor inicial.
[].reduce(function(previousValue, currentValue){
return Number(previousValue) + Number(currentValue);
}, 0);
o utilizando ES6:
[].reduce( (previousValue, currentValue) => previousValue + currentValue, 0);