map
Array.prototype.myMap=function(f){
let a=[];
for (let i=0;i<this.length;i++){
a.push(f(this[i]))
}
return a;
}
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
}
reduce
Array.prototype.myReduce=function (f,value=0) {
for (let i =0 ;i<this.length;i++){
value=f(this[i],value)
}
return value
}
filter
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.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;
}
foreach
Array.prototype.myForEach=function (f) {
for (let i=0;i<this.length;i++){
f(this[i])
}
}
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);
}
}
}
some
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.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;
}
every
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
}
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;
}