手写函数-once/forEach/filter

128 阅读1分钟
//once 函数 (高阶函数-函数作为返回值)
function once(fn){
 console.log(fn);
 let done=false
 return function(){
 if(!done){
 done=true
 return fn()
        }
    }
}


//forEach 函数(高阶函数-函数作为参数)
function forEach(array,fn){
 for(let i=0;i<array.length;i++){
 fn(i,array[i])
    }

}
const arr=[1,2,3,4]
forEach(arr,(item,index)=>{
 console.log(item);
 console.log(index);
})


//filter 函数(高阶函数-函数作为参数)
function filter(array,fn){
 let result=[]
 for(let i=0;i<array.length;i++){
 if(fn(array[i])){
 result.push(array[i])
       } 
    }
 return result
}
const arr1=[1,23,34,5]

let r=filter(arr1,(item)=>{
 return item>20
})
console.log(r);