最全JavaScript的数组迭代方法的重构

迭代方法中没有第二个参数this指向全局对象 node里面是global html文档中指向window //有第二个参数this指向第二个参数,第二个参数可以是任意数据

1.every(function(item,index,arr){},this对象) 

​    1.第一个参数在数组中的每个元素都会执行到的函数,固定的

​    2.第二个参数是前面function内的this指向-- 第二个参数任意数据类型,传什么都可以

​    3.判断数组元素是否都满足某一条件,一项不满足直接跳出当前判断,符合短路原则

Array.prototype.myEvery=function(fun,obj){
        for(var i=0;i1  //一项条件不满足 直接返回false
    },{name:'zhangsan'}) //第二个参数可以是任意数据类型)
    console.log(result)

2.some(function(item,index,arr){},this对象)第一个参数在数组中的每个元素都会执行到的函数,

​    1.第二个参数是前面function内的this指向-- 

​    2.判断数组元素是否有一个满足条件,一项满足,跳出判断,返回true符合短路原则

Array.prototype.mySome=function(fun,obj){
    for(var i=0;i1  //一项满足 直接返回true
    },{name:'zhangsan'}) //第二个参数可以是任意数据类型)

 3.filter(function(item,index,arr){},this对象) 过滤出满足某一条件的元素,组成新的数组

Array.prototype.myFilter=function(fun,obj){
    var result=[];
    for(i=0;i2 
    },{name:'zhangsan'})
    console.log(result)

4.map(function(item,index,arr){},this对象) 映射出元素的某一部分,组成新数组

Array.prototype.myMap = function (fun, obj) {
    var result = [];
    for (i = 0; i < this.length; i++) {
        //obj?test():test2()
        result.push(obj ? fun.bind(obj)(this[i]) : fun(this[i]))
    }
    return result
    }
    var arr = [1, 2, 3, 4, 5];
    var result = arr.myMap(function (item, index, arr) {
        console.log(this)//没有第二个参数this指向全局对象node 里面是global html文档中指向window  //有第二个参数this指向第二个参数
        return item + 1
    }, { name: 'zhangsan' })
    console.log(result)

 5.forEach(function(item,index,arr){},this对象)遍历数组

Array.prototype.myForEach=function(fun){
    for(var i=0;i

你可能感兴趣的:(javascript)