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

如何修改Lodash groupBy生成的分组对象中所有子对象的isChanged值?

解决方案

方法一:原地修改原对象(最高效)

直接遍历对象的所有分组,修改每个子对象的isChanged属性,无需额外内存开销:

for (const date in GroupedData) {
  GroupedData[date].forEach(item => {
    item.isChanged = true;
  });
}

方法二:创建新对象(不修改原数据)

如果需要保留原始数据,可通过Object.fromEntries生成新对象:

const updatedData = Object.fromEntries(
  Object.entries(GroupedData).map(([date, items]) => [
    date,
    items.map(item => ({ ...item, isChanged: true }))
  ])
);

方法三:使用Lodash实现

若仍偏好Lodash,可结合forEach或mapValues完成:

// 原地修改
_.forEach(GroupedData, items => {
  _.forEach(items, item => {
    item.isChanged = true;
  });
});

// 生成新对象
const updatedData = _.mapValues(GroupedData, items => 
  _.map(items, item => ({ ...item, isChanged: true }))
);

效率说明

  • 原地修改的方式(方法一、Lodash原地修改版本)性能最优,因为直接操作原数据,无额外内存分配。
  • 生成新对象的方式适合需要保持数据不可变的场景,但会创建新的数组和对象,内存占用略高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:06