我正在尝试计算其中包含一些NaN
的具有超过10 000个值的数组的总和。我对此进行了大量研究,但没有找到适当的答案。
如果我的数组不包含任何reduce
,则使用NaN
函数可以正常工作。
.reduce((pv, cv) => pv+cv, 0)
但是有没有一种快速的方法来实现这一点,例如在MATLAB中nansum
,而无需循环整个数组,移除NaN
然后计算总和?
答案 0 :(得分:2)
如果cv
isNaN
,您可以检入reduce函数;如果是,则替换0
:
.reduce((pv, cv) => pv + (isNaN(cv) ? 0 : cv), 0)
答案 1 :(得分:1)
您可以先删除NaN
,然后再减少:
.filter( (n) => !isNaN(n) )
.reduce( (pv, cv) => pv + cv )
除了不确定优化的编译器是否可以更好地优化它之外,我不确定此答案与bhmaker的答案之间是否有重大区别。