数组迭代方法及其重构

1.迭代方法

1.every(function(item,index,arr){},this对象) 
•第一个参数在数组中的每个元素都会执行到的函数,固定的
​
•第二个参数是前面function内的this指向-- 第二个参数任意数据类型
​
•判断数组元素是否都满足某一条件,一项不满足直接跳出当前判断,符合短路原则。filter() 不会对空数组进行检测,不会改变原始数组。
2.some(function(item,index,arr){},this对象)
•第一个参数(与every方法类似)
​
•第二个参数(与every方法类似)
​
•判断数组元素是否有一个满足条件,一项满足,跳出判断,返回true符合短路原则。filter() 不会对空数组进行检测,不会改变原始数组。
3.filter(function(item,index,arr){},this对象) 
•第一个参数(与every方法类似) 
​ 
•第二个参数(与every方法类似)

•过滤出满足某一条件的元素,组成新的数组。filter() 不会对空数组进行检测,不会改变原始数组。
4.map(function(item,index,arr){},this对象) 
•第一个参数(与every方法类似)
​
•第二个参数(与every方法类似)

•映射出元素的某一部分,组成新数组。map() 不会对空数组进行检测,不会改变原始数组。
5.forEach(function(item,index,arr){},this对象)
•第一个参数(与every方法类似)
​
•第二个参数(与every方法类似)

•forEach方法用于调用数组的每个元素,并将元素传递给回调函数。forEach() 对于空数组是不会执行回调函数的。 
注意:迭代方法中没有第二个参数this指向全局对象,node里面的全局对象是global,html文档中的全局对象是window,有第二个参数this指向第二个参数,第二个参数可以是任意数据类型

2.重构迭代方法

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

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

(2)mysome 如果有一项满足直接返回true,不再往后判断,直接返回true

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

(3)myMap 映射 对每一项数组项进行操作,返回的是操作后的一个新数组

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)

(4)myFilter 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

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

(5)myForEach

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

你可能感兴趣的:(javascript)