You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按JSON对象的number和item字段分组数组元素?

按number和item字段分组数组元素

你可以用Array.prototype.reduce()来实现这个分组需求,这比单独用sort()或filter()更高效直接,具体实现如下:

const originalArray = [
  {number: 9, item: 'Item 1', descripton: 'abc'},
  {number: 5, item: 'Item 2', descripton: 'def'},
  {number: 9, item: 'Item 2', descripton: 'ghi'},
  {number: 9, item: 'Item 1', descripton: 'xyz'},
];

// 用reduce构建分组映射对象
const groupedMap = originalArray.reduce((acc, current) => {
  // 生成唯一分组标识:拼接number和item的值
  const groupKey = `${current.number}-${current.item}`;
  // 若当前分组不存在,初始化空数组
  if (!acc[groupKey]) {
    acc[groupKey] = [];
  }
  // 将当前元素推入对应分组
  acc[groupKey].push(current);
  return acc;
}, {});

// 提取分组对象的所有值,得到目标二维数组
const groupedArray = Object.values(groupedMap);

console.log(groupedArray);

代码说明

  1. reduce遍历构建分组:遍历原数组时,以number和item拼接成的字符串作为唯一键,把相同键的元素归集到同一个数组中。
  2. 转换为目标结构:通过Object.values()将分组对象的数组值提取出来,直接得到你需要的二维数组结构。

这个方法会保留分组在原数组中首次出现的顺序,在ES6及以上环境中可以直接使用。

内容的提问来源于stack exchange,提问作者Михаил Обломович

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:15:36