【发布时间】:2021-06-16 10:30:11
【问题描述】:
假设我有一个如下所示的数组:
[
{ id 1, date: "1/1/2021", count: 2, oldCount: 1 },
{ id 1, date: "2/1/2021", count: 3, oldCount: 2 },
{ id 2, date: "1/1/2021", count: 2, oldCount: 1 },
{ id 2, date: "2/1/2021", count: 3, oldCount: 2 }
]
这里真正的关键是id 和date 的组合。我希望最终结果如下所示:
[
{ id 1, "1/1/2021": 2, "2/1/2021": 3, "1/1/2021_old": 1, "2/1/2021_old": 2 },
{ id 2, "2/1/2021": 3, "2/1/2021": 3, "1/1/2021_old": 1, "2/1/2021_old": 2 }
]
我更喜欢使用 lodash。让我感到困惑的部分是要添加到数组中每个对象的附加属性。在我们的现实世界场景中,可能有数千条记录需要进行重复数据删除和映射,这是资源密集型的。
你可以看到逻辑。它按id 分组,并根据原始date 属性的值添加属性名称。
这是我想要的功能的一个无效示例:
arr = _.map(_.groupBy(data, "id"), objs => {
return _.assignWith({ /* I don't know the dates to set the property names */ }, ...objs)
});
我可以用嵌套循环来做到这一点。我正在寻找最佳性能选项和更少的代码行数。
【问题讨论】:
标签: javascript lodash