Javascript 通过公共键和值组合数组中的对象

Javascript 通过公共键和值组合数组中的对象,javascript,arrays,object,Javascript,Arrays,Object,我有一个数据集,一个对象数组,我需要通过一个公共键(日期)进行组合,然后将用户名合并为UserScore的键。 我计划用d3来绘制这些数据,并使用d3的一些方法来解决问题,但我想用vanilla JS来编写。这是一个原始数据的示例 [ { "Date": "2019-05-02 00:00:00 UTC", "UserName": "user1", "UserScore": "39" }, { "Date": "2019-05-02 00:00:00

我有一个数据集,一个对象数组,我需要通过一个公共键(日期)进行组合,然后将用户名合并为UserScore的键。 我计划用d3来绘制这些数据,并使用d3的一些方法来解决问题,但我想用vanilla JS来编写。这是一个原始数据的示例

[
  {
    "Date": "2019-05-02 00:00:00 UTC",
    "UserName": "user1",
    "UserScore": "39"
  },
  {
    "Date": "2019-05-02 00:00:00 UTC",
    "UserName": "user2",
    "UserScore": "11"
  },
  {
    "Date": "2019-05-02 00:00:00 UTC",
    "UserName": "user3",
    "UserScore": "4"
  },
  {
    "Date": "2019-05-02 01:01:01 UTC",
    "UserName": "user1",
    "UserScore": "57"
  },
  {
    "Date": "2019-05-02 01:01:01 UTC",
    "UserName": "user2",
    "UserScore": "1"
  },
  {
    "Date": "2019-05-02 01:01:01 UTC",
    "UserName": "user3",
    "UserScore": "42"
  }
]

这是我想要的输出

   {
    "Date": "2019-05-02 00:00:00 UTC",
    "user1": "39",
    "user2": "11",
    "user3": "4"
   },
   {
    "Date": "2019-05-02 01:01:01 UTC",
    "user1": "57",
    "user2": "1",
    "user3": "42"
   }
]
您可以使用
reduce()
对它们进行分组

const arr=[{“日期”:“2019-05-02 00:00:00 UTC”,“用户名”:“user1”,“UserScore”:“39”},{“日期”:“2019-05-02 00:00:00 UTC”,“用户名”:“user2”,“UserScore”:“11”},{“日期”:“2019-05-02 00:00:00 UTC”,“用户名”:“user3”,“UserScore”:“4”},{“日期”:“2019-05-02 01:01:01”,“用户名”:“user1”,“UserScore”:“57”{“日期”:“2019-05-02 01:01:01 UTC”,“用户名”:“用户2”,“用户分数”:“1”},{“日期”:“2019-05-02 01:01:01 UTC”,“用户名”:“用户3”,“用户分数”:“42”}]
const res=arr.reduce((ac,{Date,UserName,UserScore})=>{
ac[Date]=ac[Date]|{Date};
ac[日期][用户名]=用户分数;
返回ac;
},{})

console.log(对象值(res))
这太好了,谢谢!几乎正是我要找的,一个问题是我现在有一个嵌套对象的对象。将初始值更改为数组,我仍然有嵌套对象,是否可以使用此解决方案使每个对象都有自己的数组项?@weselboxs哦,是的,对不起,我忘记了部分。请参阅更新的答案。您可以使用
>对象.Values()。如果您满意,请考虑接受答案。