reduce的参数为((pre,cur,index,array)=>{},base)
//reduce 方法
//函数 初始值
Array.prototype.myreduce=function (fn,base){
let myarr=this
//数组副本
let temparr=this.concat()
//如果存在默认值需要把默认值推入数组第一位
if(base) temparr.unshift(base)
//记录下标和两者和
let index
let newvalue
while(temparr.length>1){
index=myarr.length-temparr.length+1
newvalue=fn.call(null,temparr[0],temparr[1],index,myarr)
//去掉两项,并且把二者的结果插入第一项
temparr.splice(0,2,newvalue)
}
return newvalue
}
let arr=[1,2,3,4]
arr.myreduce((pre,cur,index,arrry)=>{
console.log(pre);
return pre+cur+1
},20)
map会对返回对数组进行操作后的结果
//map方法 (cur,index,array)=>{}
let arr2=[1,2,3,4]
Array.prototype.mymap=function(fn){
let resultarr=[]
this.forEach((v,i)=>{
resultarr.push(fn(v,i,this))
})
return resultarr
}
let res=arr2.mymap((v,i)=>{
console.log(i);
return v*v
})
console.log(res);