欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS 中 高阶函数map reduce使用方法

程序员文章站 2022-04-19 10:26:08
js 中 高阶函数map、reduce map 定义和用法: map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 map() 方法按照原始数组元素顺序依次处理元素。 调用...

js 中 高阶函数map、reduce

map 定义和用法:

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

调用map()的一定是array类型,map()的返回值也是一个array语法:arr.map(function(currentvalue,index,arr)),一般index、arr可省略注意:map()并不会改变原始数组,且map不会对空数组进行检测

举个栗子:

function pow(x) {
 return x + 5;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [6, 7, 8, 9, 10, 11, 12, 13, 14]
console.log(results);

再举个栗子:

function pow(x) {
 return x * x;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
console.log(results);

总结:

一个array类型的变量 arr,arr调用array内部定义函数map(),而参数是function(),arr数组中的元素为原始数组元素,map()方法按照原始数组元素顺序依次调用并执行function(),把处理后的结果封装成一个新的array作为返回值返回。

reduce 定义和用法:

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

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

语法:

array.reduce(function(total, currentvalue, currentindex, arr), initialvalue)

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

栗子又来了:计算数组元素相加后的总和,结果125

var numbers = [65, 44, 12, 4];
function getsum(total, num) {
 return total + num;
}
var result = numbers.reduce(getsum);
console.log(result);

哈哈,再来一个:把[1, 3, 5, 7, 9]变换成整数13579

var arr = [1, 3, 5, 7, 9];
var result = arr.reduce(function (x, y) {
 return x * 10 + y;
}); 
console.log(result);