day01_手写ES6高阶函数(forEach、map、filter、every、some)
高阶函数
-
可以把函数作为参数传递给另一个函数
-
可以把函数作为另一个函数的返回结果
forEach
function forEach(list, fn) {
for (let i = 0; i < list.length; i++) {
fn(list[i])
}
}
let arr = [1, 2, 3, 4, 5, 6]
forEach(arr, item => { console.log(item) })
filter
function filter(list, fn) {
const r = []
for (let i = 0; i < list.length; i++) {
if (fn(list[i])) r.push(list[i])
}
return r
}
let arr = [1, 2, 3, 4, 5, 6]
const result = filter(arr, item => { return item % 2 == 0 })
console.log(result)
map
function map(list, fn) {
const r = []
for (let i = 0; i < list.length; i++) {
r.push(fn(list[i]))
}
return r
}
let arr = [1, 2, 3, 4, 5, 6]
const result = map(arr, item => { return item * 2 })
console.log(result)
some
function some(list, fn) {
for (let i = 0; i < list.length; i++) {
if (fn(list[i])) return true
}
return false
}
let arr = [1, 2, 3, 4, 5, 6]
const result = some(arr, item => { return item === 3 })
console.log(result)
every
function every(list, fn) {
for (let i = 0; i < list.length; i++) {
if (!fn(list[i])) return false
}
return true
}
let arr = [1, 1, 1, 1, 1, 2]
const result = every(arr, item => { return item === 1 })
console.log(result)