手写array的reduce方法

x33g5p2x  于2022-03-25 转载在 其他  
字(0.5k)|赞(0)|评价(0)|浏览(190)

一、写在前面
今天在面试的时候,面试官问道,你可以实现一个arrayreduce方法吗,我瞬间懵逼,硬着头皮写出来了,不过少了很多类型检测。下面进行简单总结一下。
二、手写reduce
我们知道reduce需要传入两个参数,第一个参数是一个函数,第二个参数是初始值,并且回调函数的参数有四个,第一个参数为上一次return的值,如果没有return就为初始值,第二个参数为遍历的值,第三个参数是索引,第四个参数是数组。知道这些就好办,接下来手撕代码。

  1. Array.prototype.myReduce = function(fn, initValue) {
  2. if(this.length === 0 || typeof fn !== 'function') {
  3. return []
  4. }
  5. initValue = initValue ?? this[0]
  6. let result = initValue
  7. for(let i = 1; i < this.length; i++) {
  8. result = fn(result, this[i], i, this)
  9. }
  10. return result
  11. }
  12. let arr = [1,2,]
  13. let res = arr.myReduce((pre, next) => {
  14. return pre + next
  15. })
  16. console.log(res)

相关文章