当前位置:首页 > JavaScript

js实现分组

2026-01-31 20:01:15JavaScript

实现数组分组的方法

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

使用reduce方法分组

const groupBy = (array, key) => {
  return array.reduce((result, currentItem) => {
    const groupKey = currentItem[key];
    if (!result[groupKey]) {
      result[groupKey] = [];
    }
    result[groupKey].push(currentItem);
    return result;
  }, {});
};

使用Object.groupBy方法(ES2023新增)

js实现分组

const grouped = Object.groupBy(items, ({ age }) => {
  return age > 18 ? 'adult' : 'minor';
});

按条件分组

const groupByCondition = (array, callback) => {
  return array.reduce((acc, item) => {
    const key = callback(item);
    acc[key] = acc[key] || [];
    acc[key].push(item);
    return acc;
  }, {});
};

分组后转换为数组

如果需要将分组结果转换为数组形式:

js实现分组

const groupToArray = (array, key) => {
  const groups = {};
  array.forEach(item => {
    const groupKey = item[key];
    if (!groups[groupKey]) {
      groups[groupKey] = [];
    }
    groups[groupKey].push(item);
  });
  return Object.keys(groups).map(key => ({
    key,
    items: groups[key]
  }));
};

多条件分组

实现基于多个属性的分组:

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

分组性能优化

对于大型数据集,可以考虑使用Map代替普通对象:

const groupByWithMap = (array, key) => {
  const map = new Map();
  array.forEach(item => {
    const groupKey = item[key];
    if (!map.has(groupKey)) {
      map.set(groupKey, []);
    }
    map.get(groupKey).push(item);
  });
  return Object.fromEntries(map);
};

这些方法可以根据实际需求选择使用,reduce方法兼容性最好,而Object.groupBy是最新的标准方法但需要较新的JavaScript环境支持。

标签: js
分享给朋友:

相关文章

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现vue路由

js实现vue路由

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

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…