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

如何基于对象嵌套属性name对数组元素分组生成二维数组

实现方案

你可以借助Map结构完成动态分组,不需要提前预判name的所有可能取值,实现逻辑如下:

const array1 = [{data: '...', name: 'a'}, {data: '...', name: 'b'}, {data: '...', name: 'a'}, {data: '...', name: 'c'}, {data: '...', name: 'c'}, {data: '...', name: 'b'}];

const groupMap = new Map();
// 遍历原数组完成分组
array1.forEach(item => {
  const currName = item.name;
  // 不存在该name的分组则初始化
  if (!groupMap.has(currName)) {
    groupMap.set(currName, []);
  }
  // 将当前项推入对应分组
  groupMap.get(currName).push(item);
});

// 提取Map的所有值转为数组,就是目标二维数组
const array2 = Array.from(groupMap.values());

如果需要分组结果按照name的字典序排序,可以增加排序逻辑:

const array2Sorted = Array.from(groupMap.entries())
  // 按name字段排序
  .sort((entryA, entryB) => entryA[0].localeCompare(entryB[0]))
  // 提取分组后的子数组部分
  .map(entry => entry[1]);

内容的提问来源于stack exchange,提问作者Sheen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:03