数组的reduce方法,接收一个函数(必须)和指定的初始值(非必须)作为参数,函数有三个参数,分别为初始值,当前项,当前数组,进行累加或者累积操作,初始值为每次累加或者累计后的结果
注意:在ie9一下的浏览器中,并不支持该方法 !
语法:arr.reduce(fn(pre,cur,arr){},[initialValue])
一些妙用:
统计每个字符出现的次数
[JavaScript]
纯文本查看
复制代码
1 2 3 4 5 6 | var obj=Array.prototype.reduce.call(str,function(pre,cur){ pre[cur]?pre[cur]++:pre[cur]=1; return pre; },{}); console.log(obj); //{a: 4, b: 1, c: 3, d: 3, e: 3, …} |
累加或者累积
[JavaScript]
纯文本查看
复制代码
1 2 3 4 5 6 | var arr=[1,2,3,4,5,6];var sum=arr.reduce(function(pre,cur,index,arr){ console.log(index);//当前项的下标 return pre+cur;});console.log(sum);//21 |
reduce 操作对象
可以通过第二个参数指定初始值操作对象的单个属性
可以通过第二个参数指定初始值操作对象的单个属性
[JavaScript]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | var result = [ { subject: 'math', score: 88 }, { subject: 'chinese', score: 95 }, { subject: 'english', score: 80 } ]; var totalScore=result.reduce(function (pre,cur) { return pre+cur.score; },0); console.log(totalScore); |