Mopecat / Daily-Mission-Board

每日任务公告板。
4 stars 1 forks source link

任务十四:手动实现一个reduce #17

Open yinjianmin1 opened 4 years ago

yinjianmin1 commented 4 years ago
Array.prototype.reduce =  Array.prototype.reduce || function(fuc,init){
init = init === 'undefined' ? this[0] : init
this.forEach((i,index)=>{
let reback = fuc(init,i,index,this) 
init = reback 
})
return init 
}
zengkaiz commented 4 years ago
Array.prototype.reduce =  Array.prototype.reduce || function(fuc,init){
init = init === 'undefined' ? this[0] : init
this.forEach((i,index)=>{
let reback = fun(init,i,index,this) 
init = reback 
})
return init 
}

形参fuc在内部拼写错误,改正后测试不通过。未考虑init不传值初始index的赋值问题

yinjianmin1 commented 4 years ago

init === 'undefined' 写错了应该是 init === undefined

yinjianmin1 commented 4 years ago
Array.prototype.reduce =  Array.prototype.reduce || function(fuc,init){
init = init === undefined ? this[0] : init
this.forEach((i,index)=>{
let reback = fuc(init,i,index,this) 
init = reback 
})
return init 
}
yinjianmin1 commented 4 years ago

经过发现未考虑index的情况更正如下

Array.prototype.reduceTest = Array.prototype.reduceTest || function (fuc,init){
  const i = init === undefined ? 1 : 0
  init = init === undefined ? this[0] : init
  this.slice(i).forEach((e,i) => {
  const rv = fuc(init,e,i,this)
  init = rv 
 });
 return init
}