Javascript Reduce una matriz vacía
Cuando reduzco la matriz, estoy tratando 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 el array está vacío no puedo reducirlo
[""].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
2 answers
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-09 20:22:20
Ambos comportamientos están de acuerdo con 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ó valor inicial, entonces el valor anterior será igual a el primer valor en la matriz y currentValue será igual a la segundo. Es un TypeError si el array no contiene elementos y initialValue no se proporciona.
Si el array tiene al menos un elemento a continuación, proporcionar un valor inicial es opcional. Sin embargo, si no se proporciona uno, entonces el primer elemento de la matriz se usa 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 el array 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 a procesar a través de la devolución de llamada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-29 08:22:51