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

JavaScript如何按对象相同属性将一维数组分组为二维数组

实现方案

核心逻辑是通过临时映射表按Structure_SortID字段值做分组聚合,不需要提前预知分组数量,天然覆盖所有要求的边界场景。

完整实现代码

function groupStructureArray(arr) {
  // 非数组/空数组直接返回空结果
  if (!Array.isArray(arr) || arr.length === 0) return [];

  const groupCollector = {};
  for (const item of arr) {
    const sortKey = item.Structure_SortID;
    // 遇到新的ID值时初始化对应分组数组
    if (!groupCollector[sortKey]) {
      groupCollector[sortKey] = [];
    }
    groupCollector[sortKey].push(item);
  }

  // 提取所有分组得到目标二维数组,分组顺序和ID首次在原数组出现的顺序一致
  return Object.values(groupCollector);
}

// 调用示例
const originArray = [
  {"Structure_SortID": "001.001.003"},
  {"Structure_SortID": "001.001.003"},
  {"Structure_SortID": "001.001.003"},
  {"Structure_SortID": "001.001.003"},
  {"Structure_SortID": "001.004.002"},
  {"Structure_SortID": "001.004.002"}
];
const groupedResult = groupStructureArray(originArray);

场景兼容说明

  • 支持任意数量分组:不管原数组里有多少种不同的Structure_SortID值,都会自动生成对应数量的子数组,不需要额外配置
  • 单分组场景兼容:如果全数组只有一个ID值,会返回仅包含一个子数组的二维数组
  • 边界场景处理:空数组、非数组输入、单元素数组输入都能返回符合逻辑的结果,不会抛出异常
  • 顺序一致性:最终输出的分组顺序,和对应ID在原数组中第一次出现的顺序完全一致,和题目给出的预期输出顺序匹配

注:题目给出的预期输出示例中第一个子数组的注释存在笔误,注释写的是Filtered so only 001.004.002,实际子数组内聚合的是Structure_SortID为001.001.003的元素,上述实现输出的数组结构和示例的实际内容完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:54:20