js中的reduce()函数讲解
程序员文章站
2023-11-23 23:22:10
定义:
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
案例
1.数组求和...
定义:
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
案例
1.数组求和
// 1.数组求和 var arr = [1,5,8,6,15,78,65,25,48,55] var sum = arr.reduce(function(total,currentvalue){ return total+currentvalue; }); console.log(sum);//306 var eachsum = 0; arr.foreach(function(currentvalue){ eachsum += currentvalue; }) console.log(eachsum);//306
2.合并二维数组
//2.合并二维数组 var twoarr = [['mu','zi'],['dig','big'],['lucky','jiji']]; var onearr = twoarr.reduce(function(total,currentvalue){ // console.log(total) return total.concat(currentvalue); }) console.log(onearr);//["mu", "zi", "dig", "big", "lucky", "jiji"]
3.统计一个数组中有多少个不重复的单词:
//3.统计一个数组中有多少个不重复的单词: // 不用reduce时: var arr = ["apple","orange","apple","orange","pear","orange"]; function getwordcnt(){ var obj = {}; for(var i= 0, l = arr.length; i< l; i++){ var item = arr[i]; obj[item] = (obj[item] +1 ) || 1; } return obj; } console.log(getwordcnt());//{apple: 2, orange: 3, pear: 1} // 用reduce时: var arr = ["apple","orange","apple","orange","pear","orange"]; function getwordcnt(){ return arr.reduce(function(prev,next){ prev[next] = (prev[next] + 1) || 1; return prev; },{}); } console.log(getwordcnt());//{apple: 2, orange: 3, pear: 1}
4.对reduce的理解:
reduce(callback,initiavalue)会传入两个变量,回调函数(callback)和初始值(initiavalue)。
假设函数有个传入参数,prev和next,index和array。 prev和next是你必须要了解的。
当没有传入初始值时,prev是从数组中第一个元素开始的,next是第二个函数。
但是当传入初始值(initiavalue)后,第一个prev将是initivalvalue,next将是数组中的第一个元素。
比如:
// 4.对reduce的理解: var arr = ["apple","orange"]; function nopassvalue(){ return arr.reduce(function(prev,next){ console.log("prev:",prev); console.log("next:",next); return prev; }); } function passvalue(){ return arr.reduce(function(prev,next){ console.log("prev:",prev); console.log("next:",next); prev[next] = 1; return prev; },{}); } console.log("no additional parameter:",nopassvalue()); console.log("----------------"); console.log("with {} as an additional parameter:",passvalue()); /* vm415673:4 prev: apple vm415673:5 next: orange vm415673:4 prev: apple vm415673:5 next: orange vm415673:19 no additional parameter: apple vm415673:20 ---------------- vm415673:13 prev: {} vm415673:14 next: apple vm415673:13 prev: {apple: 1} vm415673:14 next: orange vm415673:21 with {} as an additional parameter: {apple: 1, orange: 1} */
若有不足请多多指教!希望给您带来帮助!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
上一篇: 不同品牌的对讲机怎么调频才能正常通话?
下一篇: 剪映app视频怎样自动识别字幕?