当前位置:首页 > JavaScript

reduce实现js

2026-01-31 20:25:05JavaScript

reduce 方法的基本概念

reduce 是 JavaScript 数组的高阶函数,用于将数组元素通过回调函数累加为单个值。其语法为:

array.reduce(callback(accumulator, currentValue, index, array), initialValue)
  • accumulator:累加器,存储回调函数的返回值。
  • currentValue:当前处理的数组元素。
  • index(可选):当前元素的索引。
  • array(可选):调用 reduce 的数组。
  • initialValue(可选):累加器的初始值。若省略,默认使用数组的第一个元素作为初始值。

常见应用场景

求和

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

扁平化数组

const nestedArray = [[1, 2], [3, 4], [5, 6]];
const flatArray = nestedArray.reduce((acc, curr) => acc.concat(curr), []);
console.log(flatArray); // 输出: [1, 2, 3, 4, 5, 6]

统计字符出现次数

const words = ['hello', 'world', 'hello'];
const wordCount = words.reduce((acc, curr) => {
  acc[curr] = (acc[curr] || 0) + 1;
  return acc;
}, {});
console.log(wordCount); // 输出: { hello: 2, world: 1 }

注意事项

  • 若数组为空且未提供 initialValue,会抛出 TypeError
  • 提供 initialValue 可避免意外行为,例如处理对象数组时建议显式初始化。

进阶用法

链式调用
结合 mapfilter

const data = [1, 2, 3, 4];
const result = data
  .map(x => x * 2)
  .filter(x => x > 4)
  .reduce((acc, curr) => acc + curr, 0);
console.log(result); // 输出: 14 (6 + 8)

按属性分组

reduce实现js

const people = [
  { name: 'Alice', age: 21 },
  { name: 'Bob', age: 21 },
  { name: 'Charlie', age: 22 }
];
const groupedByAge = people.reduce((acc, curr) => {
  const age = curr.age;
  if (!acc[age]) acc[age] = [];
  acc[age].push(curr);
  return acc;
}, {});
console.log(groupedByAge);
// 输出: { 21: [{...}, {...}], 22: [{...}] }

通过灵活使用 reduce,可以高效处理数组的聚合、转换和分组操作。

标签: reducejs
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现vr

js实现vr

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

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…