当前位置:首页 > JavaScript

js实现分组

2026-04-05 12:18:15JavaScript

js实现分组

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

js实现分组

使用 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;
}, {});

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

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

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

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…