JavaScript是否等同于MATLAB中的“ nansum”?

时间:2018-06-20 19:54:23

标签: javascript

我正在尝试计算其中包含一些NaN的具有超过10 000个值的数组的总和。我对此进行了大量研究,但没有找到适当的答案。

如果我的数组不包含任何reduce,则使用NaN函数可以正常工作。

.reduce((pv, cv) => pv+cv, 0)

但是有没有一种快速的方法来实现这一点,例如在MATLAB中nansum,而无需循环整个数组,移除NaN然后计算总和?

2 个答案:

答案 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的答案之间是否有重大区别。