javascript使用未定义的值减少sum数组

lev*_*evi 4 javascript

我有这个带数字的简单数组:

var arr = [100,200,undefined,450,300];
Run Code Online (Sandbox Code Playgroud)

我想用它reduce来快速总结那个数组中的值,就像这样......

var total = arr.reduce( function( s, v ){ return s += v } );
Run Code Online (Sandbox Code Playgroud)

return我得到NaN.

有没有办法reduce使用未定义的值对数组中的值求和?像一面旗帜或什么......谢谢!

Nin*_*olz 8

你可以使用默认值falsy值(undefined,null,0,'',有的更多)与逻辑OR||,像

v || 0
Run Code Online (Sandbox Code Playgroud)

这意味着如果v是一个真正的价值,那么取这个值,如果不是,则取零.

var arr = [100, 200, undefined, 450, 300],
    total = arr.reduce(function (s, v) { return s + (v || 0); }, 0);

console.log(total);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,

s += v
   ^ 
Run Code Online (Sandbox Code Playgroud)

没有必要,因为你不再使用s该功能了.返回值是s下一个循环中的新值.回调的变量是独立的,它们有自己的范围.


  • @HMR,好的捕获,如果只对回调的第二个参数和空数组进行检查,则需要一个起始值. (2认同)