JS中filter/map/reduce方法

先提出问题

  1. 取出所有小于100的数字
  2. 将所有小于100的数字转换,全都X2
  3. 在2的数组上使所有数字相加,得出最终结果
		//取出所有小于100的数字
		const str1=[12,155,45,156,180,180,45,99];
		let newList1=[],list1_len=0;
		
		for (let i = 0; i < str1.length; i++) {
			if(str1[i]<100)				
			{
				newList1[list1_len++]=str1[i];
			}
		}
		
		console.log(newList1);
		
		//将所有小于100的数字转换,全都X2
				
		let newList2=[],list2_len=0;
		
		for (let i = 0; i < list1_len; i++) {			
			newList2[list2_len++]=newList1[i]*2;
		}
		
		console.log(newList2);
		
		//在2的数组上使所有数字相加,得出最终结果
		
		let list3_len=0,sum=0;
		
		for (let i = 0; i < list2_len; i++) {			
			sum+=newList2[i];
		}
		
		console.log(sum);

在这里插入图片描述

filter

filter其实就是一个过滤的方法,它的参数主要是一个回调函数,它的返回值是一个布尔值类型。它为每一项运行给定方法,并将true的值全部返回。其实绕来绕去的,意思就是说它每一项都是要去调用该回调函数的,并将每一项的返回值返回。就如下面代码中,数组有8项,那么就会调用8次这个方法,并将满足条件的值返回给newList作为它的一项.直到8次调用完毕

const str1=[12,155,45,156,180,180,45,99];

let newList=str1.filter((item)=>{
	return item<100
})	
console.log(newList);

这里就是将小于100的数组中的值返回给newList,这就可以实现对应的第一个要求

map

map和forEach都用来遍历数组,其实两者功能差不多,只是map会返回操作的数组,而forEach不会返回值而已

newList=newList.map((item)=>{
	return item*2
})
		
console.log(newList);

这里就实现了第二个要求

reduce

reduce的参数为一个回调函数和一个初始值,而它回调函数的参数是最终返回的值,当前项的值,当前项的索引和要操作的数组。

let sum=newList.reduce((total,cur)=>{
	console.log(total);
	return total+cur;			
},0)
		
console.log(sum);

在这里插入图片描述

因此发现,如果给了初始值,那么会给它的返回值先赋值为0,如果不赋值,那么就直接获取下一次的返回值

因此,三个高级函数已经讲好了,那么细心的兄弟可能已经发现,这三个函数是都有返回值的,且返回值也是函数,那么有没有可能把他们写到一起来呢?

是有的,一行结束

sum=str1.filter((item)=>item<100).map((item)=>item*2).reduce((total,cur)=>total+cur);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值