js中reduce的用法,如何使用reduce函数

时间: 2018-09-05阅读: 3728标签: array

reduce的定义 

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的


reduce的语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

1、functiong必填,用于执行每个数组元素的函数。其参数如下:

total 必需。初始值, 或者计算结束后的返回值。 
currentValue 必需。当前元素 
currentIndex 可选。当前元素的索引 
arr 可选。当前元素所属的数组对象。

2、initialValue可选,传递给函数的初始值。


浏览器的兼容

IE-9以上版本、Firefox-3.0以上版本、Safari-4以上版本、Opera-10.5以上版本。


reduce的用法

1、数组求和

var numbers = [1, 2, 3, 4];
 
function getSum(total, num) {
    return total + num;
}

console.log(numbers.reduce(getSum)) //10


2、数组扁平化

var rel=[[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
    return a.concat(b);
});

console.log(rel) //[0, 1, 2, 3, 4, 5]


3、数组最大值

var numbers = [1,10,100,0];
var max = numbers.reduce(function(pre,cur,inde,arr){return pre>cur?pre:cur;}); 
console.log(max)  //100


4、数组转对象

var arr = [{name: 'tony', age: 18}, {name: 'fly', age: 20}];
var obj = arr.reduce((prev, cur) => {prev[cur.age] = cur; return prev;}, {});
console.log(obj) 
//18:{name: "tony", age: 18}
//20:{name: "fly", age: 20}


5、统计字符串中每个字符出现的次数

var arr = 'abcdaabc';
var info = arr.split('').reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});
console.log(info); //{ a: 3, b: 2, c: 2, d: 1 }


6、数组去重

Array.prototype.unique = function() {
  var sortArr = this.sort(), result = [];
  sortArr.reduce((v1,v2) => {
    if(v1 !== v2){
      result.push(v1);
    }
    return v2;
  })
  result.push(sortArr[sortArr.length - 1]);
  return result;
}


......

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1056

for in 和 for of的区别详解

for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错。for ... in 循环返回的值都是数据结构的 键值名。遍历对象返回的对象的key值,遍历数组返回的数组的下标(key)。for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名

JS取出两个数组中的不同或相同元素

concat() 方法:用于连接两个或多个数组。Array filter() 方法:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。indexOf() 方法:可返回某个指定的字符串值在字符串中首次出现的位置。

从非数组对象转数组方法小结

从非数组对象转数组方法:Array.prototype.slice.call(obj、Array.from(obj)、[…obj]、Object.values(obj)等

js 数组方法,包含ES6方法

JavaScript常用数组操作方法:concat() 方法用于连接两个或多个数组。join() 方法用于把数组中的所有元素放入一个字符串。push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。pop() 方法用于删除并返回数组的最后一个元素。

如何快速的创建一个包含100个元素的数组

如何快速的创建一个包含100个元素的数组, 最初见到的问题是如何创建100个为元素为0 的数组,研究了一系列的方法,包含Es6 新的API ,不得不说, ES6 好强大!

JS实现遍历不规则多维数组的方法

这篇文章主要介绍了JS实现遍历不规则多维数组的方法,涉及javascript数组递归遍历相关实现与使用技巧,需要的朋友可以参考下

Array.slice 8种不同用法

在深入研究一些更高级的用法之前,让我们看一下slice方法的基础知识。如MDN文档,slice 是数组上的一个方法,它最多有两个参数,从该索引处开始提取原数组中的元素,如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取

如何在 JavaScript 中更好地使用数组

在过去的数个月里,我注意到在我审阅的 pull request 中有四个(关于数组使用的)错误经常出现。同时,我自己也会犯这些错误,因此有了这篇文章。让我们一起学习,以确保以后能正确地使用数组方法!

Js Array对象常用方法

不改变原数组:concat();join();slice();toString(),改变原数组:pop();push();reverse();shift();unshift();sort();splice(),array.concat(array)连接两个或多个数组,返回被连接数组的一个副本

js判断对象、数组是否为空

做项目时想要根据判断对象是否为空,然后执行不同的操作,下面就整理下如何实现,针对数组和对象的通用方法。方法一:isPrototypeOf()和length判断、方法二:hasOwnProperty、方法三:利用JSON.stringify()方法

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!