最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js中的reduce()函数讲解

来源:懂视网 责编:小采 时间:2020-11-27 22:01:52
文档

js中的reduce()函数讲解

js中的reduce()函数讲解:定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。 案例 1.数组求和 // 1.数组求和 var arr = [1,5,8,6,15,78,65,25,48,55] var sum = arr.r
推荐度:
导读js中的reduce()函数讲解:定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。 案例 1.数组求和 // 1.数组求和 var arr = [1,5,8,6,15,78,65,25,48,55] var sum = arr.r

定义:

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}
 */

若有不足请多多指教!希望给您带来帮助!

总结

文档

js中的reduce()函数讲解

js中的reduce()函数讲解:定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。 案例 1.数组求和 // 1.数组求和 var arr = [1,5,8,6,15,78,65,25,48,55] var sum = arr.r
推荐度:
标签: 中的 js 详解
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top