新JSON Javascript的JSON按键值分组
我一直在阅读一些与我的问题相关的帖子,但是我还没有找到一个合适的解决方案来解决我所听到的问题 我有一个通过sql查询直接从数据库获取的JSON文件:新JSON Javascript的JSON按键值分组,javascript,json,Javascript,Json,我一直在阅读一些与我的问题相关的帖子,但是我还没有找到一个合适的解决方案来解决我所听到的问题 我有一个通过sql查询直接从数据库获取的JSON文件: [ { "scenario": "scenario-483d742c-4492-4a4f-95fa-7ccceac8bb18", "data": [ { "date": "2018-05-21", "price": 14.
[
{
"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;
}, {}))
)
您是按分组,而不是我会说的“筛选”或“分类依据”?我已经发布了我使用的函数。是的,它是按分组也许这就是您需要的:非常感谢