当前位置:首页 > JavaScript

js实现reduce

2026-01-31 15:46:00JavaScript

实现 reduce 方法

在 JavaScript 中,reduce 是一个高阶函数,用于将数组中的元素通过指定的函数累积为单个值。以下是一个自定义实现的 reduce 方法:

js实现reduce

Array.prototype.myReduce = function(callback, initialValue) {
  let accumulator = initialValue !== undefined ? initialValue : this[0];
  let startIndex = initialValue !== undefined ? 0 : 1;

  for (let i = startIndex; i < this.length; i++) {
    accumulator = callback(accumulator, this[i], i, this);
  }

  return accumulator;
};

使用示例

假设需要对数组 [1, 2, 3, 4] 求和:

js实现reduce

const arr = [1, 2, 3, 4];
const sum = arr.myReduce((acc, curr) => acc + curr, 0);
console.log(sum); // 输出 10

参数说明

  • callback:接收四个参数的函数:

    • accumulator:累积值,初始值为 initialValue 或数组的第一个元素。
    • currentValue:当前处理的数组元素。
    • currentIndex:当前元素的索引(可选)。
    • array:调用 reduce 的数组本身(可选)。
  • initialValue(可选):作为第一次调用 callback 时的第一个参数。如果未提供,则使用数组的第一个元素作为初始值。

注意事项

  • 如果没有提供 initialValue,空数组调用 reduce 会抛出错误。
  • 回调函数应确保返回累积值,否则后续迭代可能出错。

测试用例

// 求和
const sum = [1, 2, 3].myReduce((acc, val) => acc + val, 0);
console.log(sum); // 6

// 拼接字符串
const concat = ['a', 'b', 'c'].myReduce((acc, val) => acc + val, '');
console.log(concat); // 'abc'

// 扁平化数组
const flattened = [[0, 1], [2, 3], [4, 5]].myReduce(
  (acc, val) => acc.concat(val),
  []
);
console.log(flattened); // [0, 1, 2, 3, 4, 5]

通过自定义实现 reduce,可以更好地理解其内部机制,并根据需求扩展功能。

标签: jsreduce
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…