迭代方法重构

### every 如果有不满足的直接返回false,不再继续往后判断。如果全部满足,返回true

Array.prototype.myEvery=(fun,obj)=>{

    for(i=0;i

        if(!(obj?fun.bind(obj)(this[i]):fun(this[i]))){

            return false

        } //如果有第二个参数,需要修改this指向

            //if(!fun(this[i])){

            //    return false

            //} ---没有第二个参数的逻辑操作

    }

    return true

}

let arr=[1,2,3,4,5];

let result=arr.myEvery(function(item,index,arr){

    // return item>1;

    console.log(this)//有第二个参数,this指向第二个参数  //一项条件不满足 直接返回false

},{name:'zhangsan'})//第二个参数可以是任意数据类型)

console.log(result);

### 重构some 如果有一项满足直接返回true,不再往后判断,直接返回true

Array.prototype.mySome=function(fun,obj){

    for(i=0;i

        if(obj?fun.bind(obj)(this[i]):fun(this[i])){

            return true

        }

    }

    return false

}

let arr=[1,2,3,4,5];

let result=arr.mySome(function(item){

    console.log(this)

    return item>3

},{name:"zhangsan"});

console.log(result)

### 重构filter 返回满足条件的新数组

Array.prototype.myFilter=function(fun,obj){

    let result=[]

    for(i=0;i

        if(obj?fun.bind(obj)(this[i]):fun(this[i])){

            result.push(this[i])

        }

    }

    return result

}

let arr=[1,2,3,4,5];

let result=arr.myFilter(function(item){

    console.log(this)

    return item>3

},{name:"zhangsan"});

console.log(result)

### 重构map 映射 对每一项数组项进行操作,返回的是操作后的一个新数组

Array.prototype.myMap=function(fun,obj){

    var result=[];

    for(i=0;i

        result.push(obj?fun.bind(obj)(this[i]):fun(this[i]))

    }

    return result

}

let arr=[1,2,3,4,5];

let result=arr.myMap(function(item){

    console.log(this)

    return item+3

},{name:"zhangsan"});

console.log(result);

你可能感兴趣的:(前端,javascript,html5,css)