当前位置:首页 > JavaScript

js实现分组函数

2026-03-15 22:21:29JavaScript

实现分组函数的基本思路

分组函数的核心逻辑是根据指定的键(key)将数组元素分类到不同的组中。JavaScript中可以通过对象或Map数据结构实现,键为分组依据,值为对应元素的数组。

使用reduce方法实现

通过Array.prototype.reduce遍历数组,动态构建分组对象:

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

示例用法:

const data = [
  { category: 'fruit', name: 'apple' },
  { category: 'vegetable', name: 'carrot' },
  { category: 'fruit', name: 'banana' }
];

console.log(groupBy(data, 'category'));
// 输出: { fruit: [...], vegetable: [...] }

支持函数作为分组键

扩展实现支持通过函数计算分组键:

console.log(groupBy(data, item => item.name.length));
// 按名称长度分组

使用Map实现分组

需要保持键的顺序或键可能是对象时,使用Map更合适:

function groupByToMap(array, key) {
  return array.reduce((map, item) => {
    const groupKey = typeof key === 'function' 
      ? key(item) 
      : item[key];
    if (!map.has(groupKey)) map.set(groupKey, []);
    map.get(groupKey).push(item);
    return map;
  }, new Map());
}

处理复杂分组条件

当需要多重分组时,可以组合多个分组条件:

js实现分组函数

function multiGroupBy(array, keys) {
  return array.reduce((result, item) => {
    const groupKey = keys.map(k => 
      typeof k === 'function' ? k(item) : item[k]
    ).join('|');
    (result[groupKey] = result[groupKey] || []).push(item);
    return result;
  }, {});
}

性能优化建议

对于大型数据集,使用Map比普通对象性能更好。如果分组键是固定且已知的,可以预初始化分组结构减少动态分配开销。

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

相关文章

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

react如何使用函数

react如何使用函数

使用函数组件的基本语法 在React中,函数组件是通过JavaScript函数定义的组件。函数接收props作为参数,并返回React元素。 function Welcome(props) {…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…