1.手写forEach
Array.prototype.myForEach = function (callback) {
console.log('this',this)
console.log('callback',callback)
for (let i = 0; i < this.length;i ++) {
callback(this[i],i)
}
}
2.调用myForeach
const arr = [1,2,4,6]
arr.myForEach((item,index) => {
console.log(item,index)
})
2.手写map
const arr = [1,2,4,6]
Array.prototype.fakeMap = function (fn,context){
console.log('this',this)
console.log('fn',fn)
console.log('context',context)
let arr=this
let temp=[]
for(let i = 0;i<arr.length;i++){
let result = fn.call(context,arr[i],i,arr) //call的作用 把fn函数挂载到context
temp.push(result)
}
return temp
}
const arrMap = arr.fakeMap((item) => item+1)
console.log('arrMap',arrMap)
3.filter实现
Array.prototype.MyFilter = function (callback) {
if (typeof callback !== 'function') return;
let res = []
for(let i = 0; i < this.length;i++) {
if (callback(this[i])) {
res.push(this[i])
}
}
return res;
}
const arr = [1,2,4,6]
const arrFilter = arr.MyFilter(item => item > 2)
console.log('arrFilter',arrFilter)