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

如何按id对JSON数组分组,将同id元素归类为独立子数组?

实现方案

适配已排序输入的高效实现

由于你明确输入数组已经完成排序,相同id的元素是连续排列的,仅需一次遍历即可完成分组,无额外存储空间开销,时间复杂度O(n):

function groupById(sortedArray) {
  // 空数组直接返回
  if (!sortedArray.length) return [];
  const result = [];
  // 初始化第一组
  let currentGroup = [sortedArray[0]];
  let currentId = sortedArray[0].id;

  // 从第二个元素开始遍历
  for (let i = 1; i < sortedArray.length; i++) {
    const item = sortedArray[i];
    if (item.id === currentId) {
      // id相同,加入当前分组
      currentGroup.push(item);
    } else {
      // id不同,存入当前分组,重置分组状态
      result.push(currentGroup);
      currentGroup = [item];
      currentId = item.id;
    }
  }
  // 存入最后一组
  result.push(currentGroup);
  return result;
}

测试示例

使用你提供的输入数据测试:

const input = [
    {
        "id": "116621",
        "field": "list18",
        "line": 0,
        "value": "6",
        "changeOrder": 5
    },
    {
        "id": "116621",
        "field": "list16",
        "line": 0,
        "value": "47",
        "changeOrder": 4
    },
    {
        "id": "116621",
        "field": "list17",
        "line": 0,
        "value": "3",
        "changeOrder": 2
    },
    {
        "id": "116622",
        "field": "list16",
        "line": 1,
        "value": "6",
        "changeOrder": 3
    },
    {
        "id": "116623",
        "field": "list18",
        "line": 2,
        "value": "11",
        "changeOrder": 6
    },
    {
        "id": "116623",
        "field": "list16",
        "line": 2,
        "value": "5",
        "changeOrder": 1
    }
];

const groupedResult = groupById(input);
console.log(groupedResult);

输出格式完全符合你的要求,相同id的元素会被归到同一个子数组中。

通用未排序输入实现

如果后续你的业务场景中输入数组不再保证排序,可以使用如下哈希表分组方案:

function groupByIdUnordered(array) {
  const groupMap = {};
  array.forEach(item => {
    if (!groupMap[item.id]) groupMap[item.id] = [];
    groupMap[item.id].push(item);
  });
  // 返回子数组格式的结果,如果需要保留id为key的映射关系可直接返回groupMap
  return Object.values(groupMap);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:09:01