map, reduce, filter 等高阶函数

高阶函数及其常见方法介绍
文章换了新话题,介绍高阶函数,即函数可作为参数传递、可作为返回值输出。还阐述了常见高阶函数,如 map() 可让数组经计算得新数组且不改变原数组,reduce() 能让数组前后项计算并累计最终值,filter() 可筛选符合条件项组成新数组,同时对比了 map() 与 forEach() 的区别。

初衷

上篇其实还有一篇关于闭包的文章,由于在前几篇中已经涉及到了相关方面,因此闭包文章暂时搁置一下。换个新话题:

内容

高阶函数:Higher-order function;

  • 至少满足以下条件:
      1. 函数可以作为参数被传递;
      1. 函数可以作为返回值被输出。

常见的高阶函数有: MapReduceFilterSort


1. Map

array.map(function(currentValue,index,arr), thisValue)

map() 不会改变原始数组

[55,44,66,11].map(function(currentValue,index,arr){
	console.log(currentValue); //map() 方法按照原始数组元素顺序依次处理元素
	console.log(index);
	console.log(arr);
});
复制代码

让数组通过某种计算得到一个新数组

var newArr = [55,44,66,11].map(function(item,index,arr){
	return item *10;
});
console.log(newArr);//[550, 440, 660, 110]
复制代码
2. reduce

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

initialValue:传递给函数的初始值;

让数组中的前项和后项做某种计算,并累计最终值。

var newArr = [15.5, 2.3, 1.1, 4.7].reduce(function(total,num){
	return total + Math.round(num);//对数组元素进行四舍五入并计算总和
}, 0);
console.log(newArr);//24
复制代码

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

3. filter

array.filter(function(currentValue,index,arr), thisValue)

filter() 不会改变原始数组

var newArr = [32, 33, 12, 40].filter(function(item){
	return item > 32;
});
console.log(newArr);//[33, 40]
复制代码

筛选出符合条件的项,组成新数组。

4. forEach

array.forEach(function(currentValue, index, arr), thisValue)

map() 与 forEach() 语法一致,能用`forEach()`做到的,`map()`同样可以,但是存在区别。

  • 区别:
    • forEach()返回值是undefined,不可以链式调用;
    • map()返回一个新数组,原数组不会改变.

结语

业精于勤而荒于嬉,行成于思而毁于随。

转载于:https://juejin.im/post/5ce4e5396fb9a07ed2244436

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值