filter是一个常用的操作,它用于把 Array 的某些元素过滤掉,然后返回剩下的元素
传入一个函数 然后 filter返回的是 当前的元素 索引 元素本身
Array.prototype.myFilter = function(fn) {
const arr = []
for(let i=0;i<this.length;i++){
if(fn(this[i],i,this)) {
arr.push(this[i])
}
}
return arr
}
var arr = [1,2,3,4,5]
arr.myFilter((item,i)=>{
return item>2
})
Map方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
Array.prototype.myMap = function(fn){
const arr = []
for(let i =0;i<this.length;i++){
arr.push(fn(this[i],i,this))
}
return arr
}
var arr2 = [1,2,3,4,5]
arr2.myMap((item)=>{
return item*2
})
forEach 方法和Map相似 forEach没有返回
Array.prototype.myForEach=function(fn){
for(let i=0;i<this.length;i++){
fn(this[i],i,this)
}
}
var arr2 = [1,2,3,4,5]
arr2.myMap((item)=>{
return item*2
})
reduce 累加器
Array.prototype.myReduce = function (fn,csz){
const res = csz?csz:this[0]
for(let i = csz?0:1;i<this.length;i++){
res = fn(res,this[i],i,this)
}
return res
}