forEach
const arr = [1,2,3,4]
Array.prototype.myForEach = function(fn){
for(let i=0;i<this.length;i++){
fn(this[i],i,this)
}
}
arr.myForEach((item,index,arr)=>console.log(item,index,arr))
map
const arr = [1,2,3,4]
Array.prototype.mymap=function(fn){
let newArr = []
for(let i=0;i<this.length;i++){
newArr.push(fn(this[i],i,this))
}
return newArr
}
const result = arr.myMap(item=>`wo${item}`)
console.log(result);
filter
const arr = [1,2,3,4]
Array.prototype.myFilter=function(fn){
let newArr=[]
for(let i=0;i<this.length;i++){
if(fn(this[i],i,this)){
newArr.push(this[i])
}
}
return newArr
}
const result = arr.myFilter(item=>item>2)
console.log(result);
find
const arr = [{id:1,name:"第一"},{id:2,name:"第二"}]
Array.prototype.myFind=function(fn){
for(let i=0;i<this.length;i++){
if(fn(this[i],i,this)){
return this[i];
}
}
}
const result = arr.myFind(item=>item.id==1)
console.log(result);
findindex
const arr = [{id:1,name:"第一"},{id:2,name:"第二"}]
Array.prototype.myFindIndex=function(fn){
for(let i=0;i<this.length;i++){
if(fn(this[i],i,this)){
return i;
}
}
}
const result = arr.myFindIndex(item=>item.id==1)
console.log(result);
every
const arr = [1,2,4,5]
Array.prototype.myEvery=function(fn){
for(let i=0;i<this.length;i++){
if(!fn(this[i],i,this)){
return false;
}
}
return true
}
const result = arr.myEvery(item=>item>0)
console.log(result);
some
const arr = [1,2,4,5]
Array.prototype.mySome=function(fn){
for(let i=0;i<this.length;i++){
if(fn(this[i],i,this)){
return true;
}
}
return false
}
const result = arr.mySome(item=>item>2)
console.log(result);
reduce
const arr = [1,2,4,5]
Array.prototype.myReduce=function(fn,initValue=0){
for(let i=0;i<this.length;i++){
initValue = fn(initValue,this[i],i,this)
}
return initValue
}
const result = arr.myReduce((sum,item)=>item+sum,2)
console.log(result);