JavaScript中reduce()方法的使用详解
JavaScript数组reduce()方法同时应用一个函数针对数组的两个值(从左到右),以减至一个值。
语法
array.reduce(callback[,initialValue]);
下面是参数的详细信息:
- callback:函数执行在数组中每个值
- initialValue:对象作为第一个参数回调的第一次调用使用
返回值:
返回数组的减少单一个值
兼容性:
这种方法是一个JavaScript扩展到ECMA-262标准;因此它可能不存在在标准的其他实现。为了使它工作,你需要添加下面的脚本代码的顶部:
if(!Array.prototype.reduce) { Array.prototype.reduce=function(fun/*,initial*/) { varlen=this.length; if(typeoffun!="function") thrownewTypeError(); //novaluetoreturnifnoinitialvalueandanemptyarray if(len==0&&arguments.length==1) thrownewTypeError(); vari=0; if(arguments.length>=2) { varrv=arguments[1]; } else { do { if(iinthis) { rv=this[i++]; break; } //ifarraycontainsnovalues,noinitialvaluetoreturn if(++i>=len) thrownewTypeError(); } while(true); } for(;i<len;i++) { if(iinthis) rv=fun.call(null,rv,this[i],i,this); } returnrv; }; }
例子:
<html> <head> <title>JavaScriptArrayreduceMethod</title> </head> <body> <scripttype="text/javascript"> if(!Array.prototype.reduce) { Array.prototype.reduce=function(fun/*,initial*/) { varlen=this.length; if(typeoffun!="function") thrownewTypeError(); //novaluetoreturnifnoinitialvalueandanemptyarray if(len==0&&arguments.length==1) thrownewTypeError(); vari=0; if(arguments.length>=2) { varrv=arguments[1]; } else { do { if(iinthis) { rv=this[i++]; break; } //ifarraycontainsnovalues,noinitialvaluetoreturn if(++i>=len) thrownewTypeError(); } while(true); } for(;i<len;i++) { if(iinthis) rv=fun.call(null,rv,this[i],i,this); } returnrv; }; } vartotal=[0,1,2,3].reduce(function(a,b){returna+b;}); document.write("totalis:"+total); </script> </body> </html>
这将产生以下结果:
totalis:6