什么是 ReduceTo 与 By?
在函数式编程中,reduce 是一个强大的高阶函数,用于将数组“归约”为单个值。
而 ReduceTo 通常指通过 reduce 构建特定结构(如对象、映射等)的过程;
By 则常用于按某个条件对数据进行分组(group by)或聚合。
虽然 JavaScript 原生没有 reduceTo 或 groupBy 方法(直到 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;
}, {});
// 结果: { 研发: [...], 市场: [...] }
动手试试!
点击下方按钮,查看实际运行结果: