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

被折叠的 条评论
为什么被折叠?



