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)