JS中的filter,map,reduce函数

今天学Vue的时候,视频里CodeWhy老师讲了filter,map,reduce三个函数的使用。
以下是自己的理解:
这三个函数一般是对数组进行处理

fliter函数用于筛选,当return ture时表示通过筛选,数组中的数(item)将会被返回一个新的数组

let arr=[1,2,3,4,5,6,7,8,9,10];
			let newarr = arr.filter(function(item){
				return item%2==0;
			})
//  newarr=[2,4,6,8,10] 

map函数用于对数组中每一个数单独进行计算处理,并将计算之后的数返回一个新的数组

let newarr2 =newarr.map(function(item){
			return item * 2;
})
//newarr2 = [4,8,12,16,20]

reduce函数用于对数组中所有数进行总的计算处理,例如求所有数和,乘

let  result = newarr2.reduce((function(sign,item){
		return sign * item;
}),1)
//其中1为sign的初始值,可以不写
//result = 1 * 4 * 8 *12 * 16 * 20 =122880

所以将上面的函数用一行写法为:

let arr=[1,2,3,4,5,6,7,8,9,10];
console.log(arr.filter(function(item)
{return item%2==0}).map(function(item)
{return item*2}).reduce((function(sign,item){
				return sign * item;}),1));

//箭头函数写法为:
console.log(arr.filter(item => item%2==0).map(item =>item * 2).reduce((sign,item) =>sign * item));

疑惑:这个reduce用箭头函数在这里很神奇,sign的初始值好像会根据我的return里用的运算符号改变,
sign * item 时初始值为1(或者就根本没有赋初始值直接开始了数组里的乘法运算?),sign + item 和sign - item时初始值为0?

猜测:reduce中的sign可以不用赋初始值,函数使用时会自动把数组中第1个值赋给sign,然后再对后面的数开始计算。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值