js中reduce的用法,如何使用reduce函数
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)) //102、数组扁平化
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) //1004、数组转对象
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;
}......
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!