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

Typescript如何将包含命名对象列表的对象按指定字段名分组

实现方案

你可以用原生JS的数组遍历方法直接完成转换,不需要引入第三方依赖:

// 按指定字段对数组分组的通用工具函数
function groupBy(arr, groupField) {
  return arr.reduce((result, current) => {
    const fieldValue = current[groupField];
    // 如果当前分组不存在就初始化空数组
    if (!result[fieldValue]) {
      result[fieldValue] = [];
    }
    result[fieldValue].push(current);
    return result;
  }, {});
}

// 处理你的目标对象,originalObj替换为你实际的源对象变量名
const processedObj = Object.fromEntries(
  // 遍历原对象所有顶层属性
  Object.entries(originalObj).map(([topKey, itemList]) => {
    // 对每个属性对应的数组按type字段分组
    return [topKey, groupBy(itemList, 'type')];
  })
);

如果你的项目已经引入了lodash,可以直接用内置的_.groupBy方法简化代码:

const processedObj = Object.fromEntries(
  Object.entries(originalObj).map(([key, list]) => [key, _.groupBy(list, 'type')])
);

两种写法都能直接输出你需要的目标结构,逻辑和性能都符合常规业务场景的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03