当前位置:首页 > JavaScript

js实现分组函数

2026-02-02 21:58:05JavaScript

分组函数实现方法

在JavaScript中,分组函数通常指将数组元素按照特定条件分组。以下是几种常见的实现方式:

使用reduce方法实现分组

function groupBy(arr, key) {
  return arr.reduce((acc, obj) => {
    const groupKey = typeof key === 'function' ? key(obj) : obj[key];
    (acc[groupKey] = acc[groupKey] || []).push(obj);
    return acc;
  }, {});
}

// 示例用法
const data = [
  {id: 1, category: 'A'},
  {id: 2, category: 'B'},
  {id: 3, category: 'A'}
];
const grouped = groupBy(data, 'category');
// 结果: {A: [{...}, {...}], B: [{...}]}

使用Map实现高效分组

function groupByMap(arr, keyExtractor) {
  const map = new Map();
  arr.forEach(item => {
    const key = keyExtractor(item);
    if (!map.has(key)) {
      map.set(key, []);
    }
    map.get(key).push(item);
  });
  return Object.fromEntries(map);
}

按多个条件分组

function groupByMultiple(arr, keys) {
  return arr.reduce((groups, item) => {
    const groupKey = keys.map(k => item[k]).join('|');
    (groups[groupKey] = groups[groupKey] || []).push(item);
    return groups;
  }, {});
}

使用Lodash库的groupBy

如果项目中使用Lodash,可以直接使用其groupBy方法:

const _ = require('lodash');
const grouped = _.groupBy(data, 'category');

性能优化版本

对于大型数据集,可以考虑以下优化版本:

js实现分组函数

function optimizedGroupBy(array, key) {
  const result = Object.create(null);
  for (const item of array) {
    const groupKey = item[key];
    let group = result[groupKey];
    if (group) {
      group.push(item);
    } else {
      result[groupKey] = [item];
    }
  }
  return result;
}

选择哪种实现方式取决于具体需求、数据规模和性能要求。原生reduce方法在大多数情况下表现良好,而Map版本在处理复杂键时更高效。

标签: 函数js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…