当前位置:首页 > 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(可选):累加器的初始值。若省略,默认使用数组的第一个元素作为初始值。

常见应用场景

求和

reduce实现js

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]

统计字符出现次数

reduce实现js

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)

按属性分组

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
分享给朋友:

相关文章

js实现日历

js实现日历

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…