手写原生数组实现原理
手写数组中map()方法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
模拟一个map方法,返回数组中每个元素的二次方
const map = (array, fn)=>{
let results = []
for(let value of array) {
results.push(fn(value))
}
return results
}
let array = [1,3,5,6]
let arr = map(array, v => v * v)
console.log(arr) // [ 1, 9, 25, 36 ]
—————————————————————————————
手写数组的every方法
very() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
const every = (array, fn) => {
let results = true
for(let item of array) {
results = fn(item)
if(!results){
break
}
}
return results
}
let arr = [11,12,5,16]
let e = every(arr, v => v > 10)
console.log(e) // true
—————————————————————————————
手写数组的some方法
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
const some = (array, fn) => {
let results = false
for (let value of array) {
results = fn(value)
if(results) {
break
}
}
return results
}
let arr = [5,7,9,15,13]
let s = some(arr, v => v % 2 === 0)
console.log(s)
通过自己手动对原生方法的实现,可以让我们明白高阶函数的使用方式
674

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



