高阶函数: 把一个函数如果接受另一个函数作为参数,或者该函数会返回另一个函数作为返回值的函数,那么这个函数就是高阶函数
示例:
var nums = [10, 5, 11, 100, 55]
// 使用for循环过滤偶数
var newNums = []
for (var i = 0; i < nums.length; i++) {
var num = nums[i]
if (num % 2 == 0) {
newNums.push(num)
}
}
console.log(newNums) // 输出[10, 100]
区分两个概念
- 函数function:独立的function,那么称之为是一个函数
- 方法methods:当我们的一个函数属于某一个对象时,我们称这个函数是这个对象的方法
称foo是函数,foo是obj的一个方法
filter:过滤
`nums.filter((item)=>boolean)
// filter: 过滤
// [10, -5, -11, -100, -55]
// 10 => false => 不会被放到newNums
// -5 => false => 不会被放到newNums
// 11 => false => 不会被放到newNums
// 100 => false => 不会被放到newNums
// 55 => false => 不会被放到newNums
var newNums = nums.filter(function(item) {
return false
})
console.log(newNums)//[]
map映射
// map: 映射
// [10, 5, 11, 100, 55]
var newNums2 = nums.map(function(item) {
return item * 10
})
console.log(newNums2) // 预期输出每个元素乘以10的结果
forEach 迭代
功能:遍历数组 nums 的每个元素
nums.forEach(function(item) {
console.log(item)
})
find/findIndex
使用 find 方法查找数组中等于 11 的元素
var item = nums.find(function(item) {
return item === 11
})
console.log(item)
// find 方法示例
let friends = [
{name: "why", age: 18},
{name: "kobe", age: 40},
{name: "james", age: 35},
{name: "curry", age: 30},
]
// 查找 name 为 'james' 的对象
var findFriend = friends.find(function(item) {
return item.name === 'james'
})
console.log(findFriend)
var friendIndex = friends.findIndex(function(item) {
return item.name === 'james'
})
console.log(friendIndex)
reduce 累加
// reduce: 累加
// nums.reduce
// [10, 5, 11, 100, 55]
// var total = 0
// for (var i = 0; i < nums.length; i++) {
// total += nums[i]
// }
// console.log(total)
// prevValue: 0, item: 10
// prevValue: 10, item: 5
// prevValue: 15, item: 11
nums.reduce(function(prevValue, item) {
return prevValue + item
},
, 0) // 初始值设为0
console.log(total) // 输出181 (10+5+11+100+55)
下边的reduce方法的使用来实现上边累加函数