首页 > web前端 > js教程 > 正文

现代JavaScript_Array分组方法

紅蓮之龍
发布: 2025-11-22 16:19:02
原创
393人浏览过
JavaScript中常用reduce结合对象或Map实现数组分组,如按性别或年龄区间分类,兼容性好且逻辑清晰,推荐使用;Map适用于复杂键类型,而Object.groupBy为实验性新特性,暂不建议生产环境使用。

现代javascript_array分组方法

JavaScript 中对数组进行分组是一个常见需求,比如按类别、年份或状态将数据归类。现代 JavaScript 提供了简洁高效的方法来实现数组分组,尤其是结合 Array.reduce()Map 或普通对象的方式最为常用。下面介绍几种实用且清晰的分组方法。

使用 reduce 进行基础分组

这是最经典也最灵活的方式。通过 reduce 遍历数组,并根据某个属性值累积生成分组对象。

例如,有一组用户数据,想按性别分组:

const users = [
  { name: 'Alice', gender: 'female' },
  { name: 'Bob',   gender: 'male' },
  { name: 'Charlie', gender: 'male' },
  { name: 'Diana', gender: 'female' }
];

const grouped = users.reduce((acc, item) => {
  const key = item.gender;
  if (!acc[key]) acc[key] = [];
  acc[key].push(item);
  return acc;
}, {});

// 结果:
// {
//   female: [ {name: 'Alice', ...}, {name: 'Diana', ...} ],
//   male: [ {name: 'Bob', ...}, {name: 'Charlie', ...} ]
// }
登录后复制

使用 Map 对象进行更复杂的分组

当你需要更灵活的键类型(如对象、函数)作为分组依据时,Map 比普通对象更合适。同时,Map 提供了更好的性能和内置方法。

示例:按年龄区间分组

const people = [
  { name: 'Tom', age: 25 },
  { name: 'Jerry', age: 34 },
  { name: 'Lucy', age: 19 },
  { name: 'John', age: 36 }
];

const groupByAgeRange = people.reduce((map, person) => {
  const range = person.age < 30 ? 'under-30' : '30-and-over';
  if (!map.has(range)) map.set(range, []);
  map.get(range).push(person);
  return map;
}, new Map());

// 转为对象(可选)
Object.fromEntries(groupByAgeRange);
登录后复制

封装可复用的分组函数

为了提高代码复用性,可以封装一个通用的 groupBy 函数,接受数组和分组条件函数作为参数。

网龙b2b仿阿里巴巴电子商务平台
网龙b2b仿阿里巴巴电子商务平台

本系统经过多次升级改造,系统内核经过多次优化组合,已经具备相对比较方便快捷的个性化定制的特性,用户部署完毕以后,按照自己的运营要求,可实现快速定制会费管理,支持在线缴费和退费功能财富中心,管理会员的诚信度数据单客户多用户登录管理全部信息支持审批和排名不同的会员级别有不同的信息发布权限企业站单独生成,企业自主决定更新企业站信息留言、询价、报价统一管理,分系统查看分类信息参数化管理,支持多样分类信息,

网龙b2b仿阿里巴巴电子商务平台 0
查看详情 网龙b2b仿阿里巴巴电子商务平台

立即学习Java免费学习笔记(深入)”;

function groupBy(array, keyFn) {
  return array.reduce((acc, item) => {
    const key = keyFn(item);
    if (!acc[key]) acc[key] = [];
    acc[key].push(item);
    return acc;
  }, {});
}

// 使用方式
const groupedByGender = groupBy(users, user => user.gender);
const groupedByInitial = groupBy(users, user => user.name[0].toUpperCase());
登录后复制

利用 Object.groupBy(实验性,仅部分环境支持)

ECMAScript 正在提案引入原生的 Object.groupBy 方法,目前仅在较新版本的 Chrome 和 Node.js(需启用 flag)中可用。

语法示例:

// 注意:目前不建议生产环境使用
const grouped = Object.groupBy(users, user => user.gender);
登录后复制

该方法返回一个对象,结构与 reduce 方式一致,未来可能成为标准。

基本上就这些。日常开发中推荐使用 reduce 方式,兼容性好、逻辑清晰。如果项目环境较新,也可关注 Object.groupBy 的进展。关键是理解“累积 + 分类”的思维模式,就能应对各种分组场景。

以上就是现代JavaScript_Array分组方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号