ReduceTo 与 By

探索 JavaScript 中基于 reduce 的聚合(reduceTo)与分组(by)模式

什么是 ReduceTo 与 By?

在函数式编程中,reduce 是一个强大的高阶函数,用于将数组“归约”为单个值。 而 ReduceTo 通常指通过 reduce 构建特定结构(如对象、映射等)的过程; By 则常用于按某个条件对数据进行分组(group by)或聚合。

虽然 JavaScript 原生没有 reduceTogroupBy 方法(直到 ES2025 提案),但我们可以通过 Array.prototype.reduce 轻松实现这些功能。

示例 1:ReduceTo —— 构建映射表

将数组转换为以 ID 为键的对象映射:

const users = [

  { id: 1, name: 'Alice' },

  { id: 2, name: 'Bob' }

];



const userMap = users.reduce((acc, user) => {

  acc[user.id] = user;

  return acc;

}, {});



// 结果: { 1: { id: 1, name: 'Alice' }, 2: { id: 2, name: 'Bob' } }

示例 2:By —— 按属性分组

按部门对员工进行分组:

const employees = [

  { name: '张三', dept: '研发' },

  { name: '李四', dept: '市场' },

  { name: '王五', dept: '研发' }

];



const grouped = employees.reduce((acc, emp) => {

  const key = emp.dept;

  if (!acc[key]) acc[key] = [];

  acc[key].push(emp);

  return acc;

}, {});



// 结果: { 研发: [...], 市场: [...] }

动手试试!

点击下方按钮,查看实际运行结果: