javascript - 基于其中一个对象组合来自一组对象的数据

标签 javascript arrays ecmascript-6

有一个像这样的对象数组:

[{"event_id":1,"person":"John"},
 {"event_id":2,"person":"John"},
 {"event_id":3,"person":"Mike"},
 {"event_id":1,"person":"Mike"},
 {"event_id":1,"person":"Anna"},
 {"event_id":3,"person":"Anna"}]

想要的结果应该根据 event_id 将它们组合起来,并以这样的表结构显示它们:

1 John, Mike, Ana
2 John
3 Mike, Anna

每一行代表一个事件,这些行包含参与该事件的人员。 我不知道如何在 JavaScript 中做到这一点。有什么建议吗?

最佳答案

您可以使用 reduce :

const data = [
    { event_id: 1, person: 'John' },
    { event_id: 2, person: 'John' },
    { event_id: 3, person: 'Mike' },
    { event_id: 1, person: 'Mike' },
    { event_id: 1, person: 'Anna' },
    { event_id: 3, person: 'Anna' },
];

const result = data.reduce(
    (acc, val) => ({
        ...acc,
        [val.event_id]: acc[val.event_id] ? [...acc[val.event_id], val.person] : [val.person],
    }),
    {},
);

console.log(result);

关于javascript - 基于其中一个对象组合来自一组对象的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62933547/

相关文章:

javascript - NextJS 页面更改后自定义 JS 中断?

javascript - 触发浏览器事件进行测试

c# - 将数据存储在数组、对象、结构、列表或类中。 C#

java - 修改矩阵并将列和行设置为零的算法

javascript - 根据条件设置多个 const 值

javascript - Flexbox 强制滚动到底部

Javascript 在 If 语句中错误地执行 MVC 代码

javascript - 如何从对象数组中删除元素?

javascript - ES6 - 在父构造函数方法中获取子类属性

javascript - 如何在 ES6 或 Javascript 中的 settimeout 函数之后触发不受我们控制的函数?