当前位置:首页 > JavaScript

js实现分组函数

2026-02-02 21:58:05JavaScript

分组函数实现方法

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

js实现分组函数

使用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');

性能优化版本

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

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

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现日历

js实现日历

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

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…