当前位置:首页 > 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实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <ht…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…