资讯专栏INFORMATION COLUMN

js小拔高——写一个reduce

ASCH / 1683人阅读

摘要:缘起最近看油管里面有一个关于面试的视频,里面提到了可能会让你写一写等函数,于是也来一起小拔高拔高。于是知道我们写的回调会被调用,并且传一个进来。其中累加值的初始值是我们传的,如果我们没传,那么累加值的初始值就会是数组的第一个元素。

缘起:最近看油管里面有一个关于js面试的视频,里面提到了可能会让你写一写reduce等函数,于是也来一起小拔高拔高。
先写写map

首先回忆平时是如何使用的map。

// const newarr = arr.map(v=>v*v) 

于是知道我们写的回调会被map调用,并且传一个v进来。

Array.prototype.myMap = function (callback){
  const newArray = []
  this.forEach(ele => {
    newArray.push(callback(ele))
  })
  return newArray
}

开始写reduce

先上mdn查查reduce的具体参数和用法。

// const afterReduceVal = arr.reduce((acc,cur,idx,src)=>{
do something and return acc},init)

也就是说reduce会调用我们的回调,并且传给我们累加值acc,当前值cur,当前索引idx,源数组src。其中累加值的初始值是我们传的init,如果我们没传,那么累加值的初始值就会是数组的第一个元素。

Array.prototype.myReduce = function(callback,init) {
  let acc,idx;
  if(init){
    acc = init // 检测我们是不是传了init
    idx = 0
  } else {
    acc = this[0]
    idx = 1
  }
  for(let i = idx;i

stackblitz

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98905.html

相关文章

  • js拔高系列——一个深拷贝

    摘要:实现首先可以写一个壳子函数,包裹一个将要反复递归调用自身的函数。如果是引用型,将对应的赋值为递归拷贝。另外在中需要使用进行判断,因为我们只想拷贝自身的属性。 最近想全职当码农,面试时候被问到了深拷贝,我噼里啪啦说了一通,感觉很牛逼,问我自己写过没有,我说没有,但是我可以写。其实我很心虚,估计现场写会卡壳。。。。。 思路 深拷贝需要迭代拷贝对象的所有属性,如果属性是引用型:Object,...

    wslongchen 评论0 收藏0
  • 回顾自己三次失败的面试经历

    摘要:站在这个时间点上,我对自己之前三次失败的面试经历做了一次深度回顾。关于我第三次面试失败的经历,依然是与轮播图有关。当然,这次思特奇面试之旅,最后也是以失败告终,这也是我离进大厂最近的一次。 showImg(https://segmentfault.com/img/bVYQuP?w=528&h=513); 前言 时间的齿轮已经来到了2017年的11月份,距离2018年仅仅还剩下不到两...

    DC_er 评论0 收藏0
  • 回顾自己三次失败的面试经历

    摘要:站在这个时间点上,我对自己之前三次失败的面试经历做了一次深度回顾。关于我第三次面试失败的经历,依然是与轮播图有关。当然,这次思特奇面试之旅,最后也是以失败告终,这也是我离进大厂最近的一次。 showImg(https://segmentfault.com/img/bVYQuP?w=528&h=513); 前言 时间的齿轮已经来到了2017年的11月份,距离2018年仅仅还剩下不到两...

    spacewander 评论0 收藏0

发表评论

0条评论

ASCH

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<