# 手写实现 Array.reduce() #

Array.prototype.myReduce = function(callback, initialValue) {
  // 判断数组是否为空
  if (this.length === 0) {
    throw new TypeError('Reduce of empty array with no initial value');
  }

  // 判断是否提供了初始值,如果没有则将第一个元素作为初始值
  let accumulator = initialValue !== undefined ? initialValue : this[0];

  // 判断是否提供了初始值,如果没有则从索引 1 开始遍历
  let startIndex = initialValue !== undefined ? 0 : 1;

  // 遍历数组,对每个元素应用回调函数,并将结果累积到 accumulator 变量中
  for (let i = startIndex; i < this.length; i++) {
    accumulator = callback(accumulator, this[i], i, this);
  }

  return accumulator;
};

// 示例用法
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.myReduce((acc, curr) => acc + curr, 0); // 输出:15

全部评论
等级太低,表示看不懂
点赞 回复 分享
发布于 2023-07-28 17:20 广东

相关推荐

不愿透露姓名的神秘牛友
07-24 13:39
在记录秋招的大魔王很...:别被忽悠了,我做了多年销售。我可以告诉你,这就是忽悠你的,销售一定要看底薪也要看提成两者不可缺一。提成是有业绩的时候才拿的到的,谁能保证一直有单状态都好。销售有时候很讲究运气的。底薪是你这个人这个岗位日常工作体现的价值。别小看底薪,你看那些跳槽去做经理主管的,底薪底一些,人家愿意去吗?所以那些说销售靠提成的纯属忽悠,除非他们的业务很容易成单。
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
allin秋招的单身...:我投过这家 上来就发个设计图给我,让我做好发到他邮箱
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务