使用groupby重塑对象 [英] Reshape objects using groupby

查看:28
本文介绍了使用groupby重塑对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下对象数组:

    const data=[
        {
            "datetime": "2020-01-30T00:59:59.000Z",
            "Benzene": 3.6
        },
        {
            "datetime": "2020-01-30T00:59:59.000Z",
            "O3": 3.7
        },
        {
            "datetime": "2020-01-30T00:59:59.000Z",
            "PM10": 3.1
        },
    
       {
            "datetime": "2020-03-30T00:59:59.000Z",
            "Benzene": 2.6
        },
        {
            "datetime": "2020-03-30T00:59:59.000Z",
            "O3": 5.7
        },
        {
            "datetime": "2020-03-30T00:59:59.000Z",
            "PM10": 10.5
       

 }
]

我只想按日期分组来重塑它,如下所示:

I want to reshape it by grouping by Date only as follow:

[{ "date":"2020-01-30",
   "values":[{"t":"2020-01-30T00:59:59.000Z",
              "Benzene":3.6,
              "O3":3.7,
              "PM10":3.1}]},
{ "date":"2020-03-30",
   "values":[{"t":"2020-03-30T00:59:59.000Z",
              "Benzene":2.6,
              "O3":5.7,
              "PM10":10.5}]}]

我想我可以使用Loadash和 .map 完成此操作,但是我不知道如何实现.

I suppose that I can accomplish this using Loadash and .map, but I can't figure it how.

有什么建议吗?

推荐答案

这可以在 javascript 中完成而无需 lodash ,就像其他答案一样,这是我对reduce的尝试:

This can be done in javascript without lodash, like other answers, here is my try with reduce:

var data=[ { "datetime": "2020-01-30T00:59:59.000Z", "Benzene": 3.6 }, { "datetime": "2020-01-30T00:59:59.000Z", "O3": 3.7 }, { "datetime": "2020-01-30T00:59:59.000Z", "PM10": 3.1 }, { "datetime": "2020-03-30T00:59:59.000Z", "Benzene": 2.6 }, { "datetime": "2020-03-30T00:59:59.000Z", "O3": 5.7 }, { "datetime": "2020-03-30T00:59:59.000Z", "PM10": 10.5 }];

var result = Object.values(data.reduce((acc,{datetime, ...rest})=>{
    const date = datetime.slice(0,10)
    acc[date] = acc[date] || {date, values:[]};
    acc[date].values = [{...acc[date].values[0], ...{t:datetime, ...rest}}];
    return acc;
},{}));

console.log(result);

这篇关于使用groupby重塑对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆