当前位置:首页 > JavaScript

js分组实现

2026-02-28 18:38:16JavaScript

分组实现方法

在JavaScript中,分组操作通常指将数组或对象按照特定条件进行分类。以下是几种常见的分组实现方式:

使用Array.prototype.reduce()

通过reduce方法可以高效地对数组进行分组。该方法遍历数组并将元素归类到不同的组中。

const items = [
  { name: 'Apple', category: 'Fruit' },
  { name: 'Carrot', category: 'Vegetable' },
  { name: 'Banana', category: 'Fruit' }
];

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

console.log(grouped);

使用Map对象

Map对象更适合需要复杂键值或需要保持插入顺序的分组场景。

const items = [
  { id: 1, type: 'A' },
  { id: 2, type: 'B' },
  { id: 3, type: 'A' }
];

const map = new Map();
items.forEach(item => {
  const key = item.type;
  if (!map.has(key)) map.set(key, []);
  map.get(key).push(item);
});

console.log(Object.fromEntries(map));

使用Lodash库的groupBy

第三方库Lodash提供了现成的groupBy函数,简化分组操作。

const _ = require('lodash');
const data = [
  { name: 'John', department: 'HR' },
  { name: 'Jane', department: 'IT' },
  { name: 'Bob', department: 'HR' }
];

const groupedData = _.groupBy(data, 'department');
console.log(groupedData);

按多条件分组

当需要根据多个属性组合进行分组时,可以创建复合键。

js分组实现

const orders = [
  { product: 'Laptop', customer: 'Alice', date: '2023-01-01' },
  { product: 'Phone', customer: 'Bob', date: '2023-01-01' },
  { product: 'Laptop', customer: 'Alice', date: '2023-01-02' }
];

const groupedOrders = orders.reduce((groups, order) => {
  const key = `${order.customer}_${order.product}`;
  if (!groups[key]) groups[key] = [];
  groups[key].push(order);
  return groups;
}, {});

console.log(groupedOrders);

注意事项

  • 原始数据若包含null或undefined值,需在分组前进行过滤处理
  • 大型数据集分组时,考虑性能优化方案如分批处理
  • 分组后的数据结构应根据实际使用场景设计,避免过度嵌套

以上方法覆盖了JavaScript中常见的数据分组需求,可根据具体场景选择合适方案。对于简单分组,原生reduce方法足够;复杂场景可考虑使用专业工具库。

标签: js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现轮播图

js实现轮播图

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

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…