新JSON Javascript的JSON按键值分组

新JSON Javascript的JSON按键值分组,javascript,json,Javascript,Json,我一直在阅读一些与我的问题相关的帖子,但是我还没有找到一个合适的解决方案来解决我所听到的问题 我有一个通过sql查询直接从数据库获取的JSON文件: [ { "scenario": "scenario-483d742c-4492-4a4f-95fa-7ccceac8bb18", "data": [ { "date": "2018-05-21", "price": 14.

我一直在阅读一些与我的问题相关的帖子,但是我还没有找到一个合适的解决方案来解决我所听到的问题

我有一个通过sql查询直接从数据库获取的JSON文件:

[
    {
        "scenario": "scenario-483d742c-4492-4a4f-95fa-7ccceac8bb18",
        "data": [
            {
                "date": "2018-05-21",
                "price": 14.173041264216105
            }
        ]
    },
    {
        "scenario": "scenario-483d742c-4492-4a4f-95fa-7ccceac8bb18",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    }, 
    {
        "scenario": "scenario-c705069f-fa53-4ff3-9f07-3fcbf9dc8d15",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    },
    {
        "scenario": "scenario-c705069f-fa53-4ff3-9f07-3fcbf9dc8d15",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    },
    {
        "scenario": "scenario-d58bb001-d7ed-4744-8f6c-8377519c7a99",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    },
    {
        "scenario": "scenario-d58bb001-d7ed-4744-8f6c-8377519c7a99",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    }
]
我的objectif能够将这个json对象排序/转换为一个新的json对象,该对象根据场景进行分类,因此,如下所示:

[
    {
        "scenario": "scenario-483d742c-4492-4a4f-95fa-7ccceac8bb18",
        "data": [
            {
                "date": "2018-05-21",
                "price": 14.173041264216105
            },
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
        ]
    },
    {
        "scenario": "scenario-c705069f-fa53-4ff3-9f07-3fcbf9dc8d15",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            },
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }

        ]
    },
    {
        "scenario": "scenario-d58bb001-d7ed-4744-8f6c-8377519c7a99",
        "data": [
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            },  
            {
                "date": "2018-05-22",
                "price": 42.94691197077433
            }
 ]
我一直在尝试一些javascript自制函数,但没有得到预期的结果。 这是我最后一次尝试:

 let estructura = [];

    for (var j =0; j<obj.length; j++){
      for (var i=0; i<estructura.length; i++){
        if(obj[j]['scenario'] == estructura[i]['scenario']){
          estructura[i]['data'].push(obj[j]['data'])
        } else {
          console.log("no match, we add the scenario to estructura")
          estructura.push(
            {
              scenario:obj[j]['scenario'],
              data: []
            })
        }
      }

    }
让estructura=[];

对于(var j=0;j您可以使用内置函数(如
reduce
)轻松实现这一点。迭代输入,分组到由
场景
索引的对象中,如果
场景
尚不存在,则使用
数据
数组创建对象,并推送到该数组:

const input=[{“场景”:“场景-483d742c-4492-4a4f-95fa-7ccceac8bb18”,“数据”:[{“日期”:“2018-05-21”,“价格”:14.173041264216105},{“场景”:“场景-483d742c-4492-4a4f-95fa-7ccceac8bb18”,“数据”:[{“日期”:“2018-05-22”,“价格”:42.94691197077433},{“场景”:“场景-c705069f-fa53-FF3-4492-4a4f-95fa-7ccceac8bb18”,“数据”:“日期”:,“价格”:42.94691197077433}},{“场景”:“场景-c705069f-fa53-4ff3-9f07-3fcbf9dc8d15”,“数据:{“日期”:“2018-05-22”,“价格”:42.94691197077433},{“场景”:“场景-d58bb001-d7ed-4744-8f6c-8377519c7a99”,“数据”:[{“日期”:“2018-05-22”,“价格”:42.94691197077433},{“场景-d58bb001-d7ed-D7A99-D7A99”,“数据”:2018-05-22,“价格”:42.94691197077433}]
console.log(
Object.values(input.reduce((a,{scenario,data})=>{
如果(!a[scenario])a[scenario]={scenario,数据:[]};
a[scenario].data.push(数据[0]);
返回a;
}, {}))

)
您是按分组,而不是我会说的“筛选”或“分类依据”?我已经发布了我使用的函数。是的,它是按分组也许这就是您需要的:非常感谢