当前位置:首页 > 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 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…