【发布时间】:2019-05-22 09:36:15
【问题描述】:
给定以下数据集:
const users = {
"1": { id: "1", name: "Alex" },
"2": { id: "2", name: "John" },
"3": { id: "3", name: "Paul" }
};
const memberships = [
{ userId: "1", groupId: "1" },
{ userId: "2", groupId: "2" },
{ userId: "3", groupId: "1" }
];
实现以下预期结果的有效方法是什么?
const usersByGroupId = {
"1": [{ id: "1", name: "Alex" }, { id: "3", name: "Paul" }],
"2": [{ id: "2", name: "John" }]
}
我想出了以下(使用 Lodash):
const usersByGroupId = mapValues(
groupBy(memberships, "groupId"),
memberships => memberships.map(membership => users[membership.userId])
);
我对大 O 表示法不太熟悉,但我可以想象上述解决方案在大集合上的性能非常糟糕。有什么改进建议吗?
【问题讨论】:
标签: javascript arrays lodash relationship denormalization