ReactJS:数组求和返回NaN,如何将resulttw初始值设为0?
解决reduce处理空数组返回NaN的问题
这个问题其实很好解决,核心就是给reduce方法加上初始值参数就行啦:
修改后的代码
var resulttw = inputFields.reduce((total, currentValue) => total + (currentValue.Weight * currentValue.Quantity), 0);
原因说明
当你调用reduce却不提供第二个参数(初始值)时,会遵循这样的规则:
- 如果数组不为空,
total默认取数组第一个元素,回调从第二个元素开始执行 - 如果数组是空的,
reduce会直接返回undefined
而undefined和任何数值做加法运算都会得到NaN,这就是你遇到的问题根源。加上初始值0之后,不管数组是空还是有元素,total都会从0开始累加,空数组时就会直接返回0,完美避开NaN的情况。
额外补充一点:哪怕数组不为空,显式指定初始值也能让代码逻辑更清晰,还能避免因为数组第一个元素类型不符合预期而出现意外错误哦。
内容的提问来源于stack exchange,提问作者Paul VI
相关产品推荐
相关产品推荐

