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

使用array.reduce分组数组时如何将返回值调整为指定id+content结构

代码修改方案

你当前的写法得到的是「id为键、同id数据数组为值」的对象,只需要把这个对象的键值对转换成要求的{id: xxx, content: xxx}结构数组即可。

完整修改代码

注意:reduce是同步方法,不需要加await,如果你的response本身是Promise,要先等待它resolve再调用reduce。

// 第一步:按messagesId分组得到分组映射对象
const groupMap = response.reduce(function (a, i) {
  a[i.messagesId] = a[i.messagesId] || [];
  a[i.messagesId].push(i);
  return a;
}, {});

// 第二步:把分组映射转成目标结构的数组
const result = Object.entries(groupMap).map(([id, content]) => ({
  id,
  content
}));

如果需要写成链式调用也可以:

const result = response
  .reduce((a, i) => {
    a[i.messagesId] = a[i.messagesId] || [];
    a[i.messagesId].push(i);
    return a;
  }, {})
  .entries()
  .map(([id, content]) => ({ id, content }));

补充说明

  • 这种写法性能更高,对象键查找是O(1)复杂度,整体只需要遍历两次数据,比在reduce里每次查找对应id项的写法效率更高。
  • 如果需要兼容极低版本的运行环境,可以用Object.keys替代Object.entries实现转换:
    const result = Object.keys(groupMap).map(id => ({
      id,
      content: groupMap[id]
    }));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:45:02