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
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下