1.简单模式
Array.prototype.myMap=function(f){ let a=[]; for (let i=0;i<this.length;i++){ a.push(f(this[i])) } return a; }
Array.prototype.myReduce=function (f,value=0) { for (let i =0 ;i<this.length;i++){ value=f(this[i],value) } return value}Array.prototype.myFilter=function (f,value=0) { let a=[] for (let i =0 ;i<this.length;i++){ let flag=f(this[i],value) if (flag) a.push(this[i]) } return a}Array.prototype.myForEach=function (f) { for (let i=0;i<this.length;i++){ f(this[i]) }}Array.prototype.mySome=function (f) { let flag=false; for (let i=0;i<this.length;i++){ flag =f(this[i]) if (flag) return flag } return flag;}Array.prototype.myEvery=function (f) { let flag=true for (let i=0;i<this.length;i++){ flag =f(this[i]) if (!flag) return flag } return flag}
2.完整模式
Array.prototype.myForEach=function(){ if(arguments.length==1&&typeof arguments[0]=="function"){ for(var i=0;i<this.length;i++){ arguments[0].call(window,this[i],i,this) } }else if(arguments.length==2){ for(var i=0;i<this.length;i++){ arguments[0].call(arguments[1],this[i],i,this); } } } Array.prototype.mySome=function(){ if(arguments.length==1&&typeof arguments[0]=="function"){ for(var i=0;i<this.length;i++){ arguments[0].call(window,this[i],i,this); var flag=arguments[0](this[i],i,this) if(flag){ return flag; } } } return false; } Array.prototype.myEvery=function(){ var flag=true; if(arguments.length==1&&typeof arguments[0]=="function"){ for(var i=0;i<this.length;i++){ arguments[0].call(window,this[i],i,this) flag=arguments[0](this[i],i,this) if(!flag){ return flag; } } } return flag; } Array.prototype.myMap=function(){ if(arguments.length==1&& typeof arguments[0]=="function"){ var newarr=[]; for(var i=0;i<this.length;i++){ arguments[0].call(window,this[i],i,this); var new_num=arguments[0](this[i],i,this); newarr.push(new_num); } } return newarr } Array.prototype.myFilter=function(){ if(arguments.length==1&&typeof arguments[0]=="function"){ var newarr=[]; for(var i=0;i<this.length;i++){ arguments[0].call(window,this[i],i,this); var flag=arguments[0](this[i],i,this); if(flag){ newarr.push(this[i]); } } } return newarr; }