JS数组的高阶方法回顾

108 阅读1分钟

1、some   数组内只要满足一个条件就返回true

2、every   数组内有一个不满足条件的就位false

3、find     返回第一个满足条件的元素,不满足就返回underfined

4、filter   返回满足条件的元素组成一个新数组,不改变原数组

5、forEach  遍历数组

6、map 返回操作后的数组

这些数组的高阶方法怎么实现的

1、forEach

//foreach    var arr = [11,22,33]        function each(callback){         for (let i = 0; i < arr.length; i++) {                callback(arr[i])                          }    }    each(function(item){            console.log(item)    })//一个构造函数的原型对象上的属性或方法会被这个构造函数的实例做继承    Array.prototype.forEach1=function(callback){            for (let i = 0; i < this.length; i++) {                  callback(this[i])                                }    }    var arr = [11,22,33]    arr.forEach1(function(item){          console.log(item)    })

2、some   只要有一个满足条件就为true

//some       Array.prototype.some1 = function(callback){           for (let i = 0; i <this.length; i++) {                let res =  callback(this[i])                   if(res===true) return true           }           return false       }       let arr = [11,55,33]       let some2 = arr.some1(function(item){            return item%2===0       })       console.log(some2)

3、every   只要有一个不满足的就为false

//everyArray.prototype.every1 = function(callback){           for (let i = 0; i <this.length; i++) {                let res =  callback(this[i])                   if(!res===true) return false           }           return true       }       let arr = [22,22,22]       let every2 = arr.every1(function(item){            return item%2===0       })       console.log( every2)

4、find  满足条件的第一个元素

//findArray.prototype.find1 = function(callback){           for (let i = 0; i <this.length; i++) {             let isTrue = callback(this[i])                  if(isTrue) return this[i]           }                }       let arr = [22,44,66]       let find2 = arr.find1(function(item){            return item%2===0       })       console.log(find2)

5、filter  返回满足条件的所有值

Array.prototype.filter1 = function(callback){        let res=[]           for (let i = 0; i <this.length; i++) {             let isTrue = callback(this[i])                  if(isTrue)  res.push(this[i])           }            return res       }       let arr = [22,44,66]       let filter2 = arr.filter1(function(item){            return item<69       })       console.log(filter2)