当前位置:首页 > JavaScript

js实现分组

2026-04-05 12:18:15JavaScript

在 JavaScript 中实现分组操作可以通过多种方式完成,以下是几种常见方法:

使用 reduce 方法

const data = [
  { category: 'A', value: 1 },
  { category: 'B', value: 2 },
  { category: 'A', value: 3 }
];

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

使用 Map 数据结构

const map = new Map();
data.forEach(item => {
  const key = item.category;
  if (!map.has(key)) map.set(key, []);
  map.get(key).push(item);
});
const grouped = Object.fromEntries(map);

使用 lodash 库的 groupBy

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

按条件分组

const grouped = data.reduce((acc, item) => {
  const key = item.value > 2 ? 'high' : 'low';
  if (!acc[key]) acc[key] = [];
  acc[key].push(item);
  return acc;
}, {});

多级分组

const multiGrouped = data.reduce((acc, item) => {
  const categoryKey = item.category;
  const valueKey = item.value > 2 ? 'high' : 'low';

  if (!acc[categoryKey]) acc[categoryKey] = {};
  if (!acc[categoryKey][valueKey]) acc[categoryKey][valueKey] = [];

  acc[categoryKey][valueKey].push(item);
  return acc;
}, {});

每种方法适用于不同场景:

js实现分组

  • reduce 适合原生实现
  • Map 适合需要保持插入顺序的情况
  • lodash 适合已有该库的项目
  • 条件分组和多级分组适合复杂逻辑

选择时需考虑浏览器兼容性、性能需求和代码可读性。

标签: js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…