js数组中常见的方法(二)——高阶函数

1,什么是高阶函数?

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

接下来我们来介绍四个高阶函数:

2,遍历:forEach()

arr.forEach(function(item,index,arr){
	console.log(item);//必需,代表遍历的每一个元素
 	console.log(index);//可选,代表每个元素的索引
 	console.log(arr);//可选,代表数组本身
})

注:

forEach():没有返回值。

下面代码代表遍历一个数组,数组中的元素相加

var arr = [1,2,3,4];
var sum = 0;
arr.forEach(function(item,index,array){
	sum = sum + item;
})
console.log(sum);//10

3,映射:map()

var a = arr.map(function(item,index,arr){
	console.log(item);//必需,代表遍历的每一个元素
 	console.log(index);//可选,代表每个元素的索引
 	console.log(arr);//可选,代表数组本身
})

注:

map() 具有返回值
map() 不会对空数组进行检测
map() 不会改变原始的数组

实例:

//给数组中的每个元素都翻倍,返回一个新数组
var arr = [1,2,3,4];
var a = arr.map(function(item,index,arr){
	return item * item;
})
console.log(a);//[1,4,9,16]

4,过滤:filter()

var a = arr.filter(function(item,index,arr){
	console.log(item);//必需,代表遍历的每一个元素
	console.log(index);//可选,代表每个元素的索引
	console.log(arr);//可选,代表数组本身
})

注:

filter()与map()不同之处在于filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

实例:

//删除数组中的偶数
var arr = [1,2,3,4,5,6];
var a = arr.filter(function(item,index,arr){
	return item % 2 !== 0;
})
console.log(a);//[1,3,5]

5,迭代:reduce()

var a = arr.reduce(function(val,curNum,i,arr){
	console.log(val);//上一次调用回调返回的值,或者是提供的初始值
	console.log(curNum);//数组中当前被处理的元素(数组里除了第一个元素之外的其他值)
	console.log(i);//当前元素在数组中的索引
	console.log(arr);//数组本身

注:

reduce() 有返回值,通常用于统计求和。

案例:

//使用reduce()去重
var array = [12,23,12,55,20,23,10];
var data = array.reduce(function(res,row,index){
	if(!res.includes(row)){	//includes代表数组中是否包含某个元素
		res.push(row);
	}
	return res;
},[])
console.log(data);//[12,23,55,20,10]
//使用reduce()获取数组中最大值
var array = [12,23,12,55,20,23,10];
	//获取数组中的最大值,reduce方法的第二个参数代表设置  reduce第一个参数函数的第一个参数的初始值
	//如果reduce没有提供第二个参数,则reduce第一个参数函数的第一个参数,默认会取数组中的第一个数据
	var max = array.reduce(function(res,row,index){
		return Math.max(res,row);
},array[0])
console.log(max);//55

以上就是今天所介绍的,数组中常见的四个高阶函数的用法以及注意事项,如果有瑕疵,希望大家提出,互相学习····

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值