何为高阶函数?
通俗的讲,高阶函数就是可以接收另一个函数作为参数的函数
常见的高阶函数有map,reduce,filter,sort,every,find,findIndex,forEach。那么他们有什么区别,使用于哪些场景呢
1.map 返回一个新数组,不会改变原数组
// 用来对数组进行特定的操作 返回一个新数组,不改变原始数组
var list = [22,180,45,50,14]
let a = list.map(function (x) {
return x*2
});
console.log(a) //[44, 360, 90, 100, 28]
2.reduce
// 常用于计算数组的和
let fansSum = this.fansData.reduce(function (prev, cur) {
return prev + cur
})
3.filter 返回一个新数组,不会改变原数组
// 用于筛选符合条件的元素
this.advertShowpagesList = this.advertShowpagesList.filter(
item => item.name === 'home'
)
// 数组去重
var list = [1,2,3,4,56,32,21,90]
let newList = list.filter(function(item,index,self){
return self.indexOf(item) == index
})
4.sort
// 常用来排序
var list = [22,180,45,50,14]
list.sort(function (x, y) {
if(x>y){return 1}
if(x<y){return -1}
return 0
});
console.log(list)
5.find 符合条件的第一个元素,找到则返回,找不到返回undefined
// 常用来查找符合条件的元素
var list = [22,180,45,50,14]
let a = list.find(function (x) {
return x == 14
});
console.log(a)
}
6.some
// 用来查找是否有符合条件的元素
var list = [22,180,45,50,14]
let a = list.some(function (x) {
return x>100
});
console.log(a) //true
7.every
// 用来查找是否元素均符合条件
var list = [22,180,45,50,14]
let a = list.every(function (x) {
return x>100
});
console.log(a) //false
8.findIndex 符合条件的第一个元素下标,找到则返回,找不到返回-1
// 用来查找符合条件的元素下标
var list = [22,180,45,50,14]
let a = list.findIndex(function (x) {
return x==14
});
console.log(a) //4
9.forEach 遍历每一个元素,会改变原数组
var list = [22,18,45,50,14]
list.forEach(function (x, y) {
console.log(x)
console.log(y)
});
console.log(list)
}