Javascript 创建不同的数据集数组
我正在尝试根据月份值创建不同的数据集。例如,对于6月份的一个数据集和7月份的另一个数据集。但在我的代码中,所有月份值都被合并并创建为一个数据集 谁能帮助我动态创建不同的数据集,这将非常有帮助。我已附加了我尝试使用数据对象的小提琴Javascript 创建不同的数据集数组,javascript,json,Javascript,Json,我正在尝试根据月份值创建不同的数据集。例如,对于6月份的一个数据集和7月份的另一个数据集。但在我的代码中,所有月份值都被合并并创建为一个数据集 谁能帮助我动态创建不同的数据集,这将非常有帮助。我已附加了我尝试使用数据对象的小提琴 不能对对象使用同一属性名两次。您的数据中有一个如下所示的对象: "data": [ { "value": "80522" }, { "value": "83743" } ] 将键
不能对对象使用同一属性名两次。您的数据中有一个如下所示的对象:
"data": [
{
"value": "80522"
},
{
"value": "83743"
}
]
将键更改为唯一键:
"data": [
{
"value1": "80522"
},
{
"value2": "83743"
}
]
或者将其设置为数组:
"data": [ "80522", "83743" ]
您还需要为月份添加支票。 试试这个:
var obj = [{
date: "2017-06-01",
reqC: "129963",
month: "JUNE",
resC: "80522"
}, {
date: "2017-06-05",
reqC: "261162",
month: "JUNE",
resC: "83743"
},{
date: "2017-07-03",
reqC: "438860",
month: "JULY",
resC: "166107"
}]
var maindataset = [];
["JUNE","JULY"].forEach((month)=>{
var dataset = [];
["reqC", "resC"].forEach((series) => {
dataset.push({
seriesname: series,
data: obj.reduce((filtered, el) => {
if(el["month"] === month){
filtered.push({value: el[series]});
}
return filtered;
},[])
})
});
maindataset.push({
dataset: dataset
});
})
alert(JSON.stringify(maindataset));
输出:
[{
"dataset": [{
"seriesname": "reqC",
"data": [{
"value": "129963"
}, {
"value": "261162"
}]
}, {
"seriesname": "resC",
"data": [{
"value": "80522"
}, {
"value": "83743"
}]
}]
}, {
"dataset": [{
"seriesname": "reqC",
"data": [{
"value": "438860"
}]
}, {
"seriesname": "resC",
"data": [{
"value": "166107"
}]
}]
}]
您可以使用嵌套的哈希表,并在稍后迭代所需部分的键
var数据=[{日期:“2017-06-01”,要求:“129963”,月份:“6月”,要求:“80522”},{日期:“2017-06-05”,要求:“261162”,月份:“6月”,要求:“83743”},{日期:“2017-07-03”,要求:“438860”,月份:“7月”,要求:“166107”},
结果={dataset:[]},
零件={reqC:'Req',resC:'Res'},
hash={{uu0:result.dataset};
data.forEach(函数(a){
var-temp=散列;
如果(!温度[一个月]){
临时[一个月]={{}:[]};
临时推送({dataset:temp[a.month].});
}
温度=温度[一个月];
对象。键(部件)。forEach(函数(k){
如果(!温度[k]){
temp[k]={{uu:[]};
临时推送({seriesname:parts[k],data:temp[k].});
}
temp[k].u.push({value:a[k]});
});
});
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以根据月份创建组,然后输出所需的数据结构。检查代码段
var obj=[{
日期:“2017-06-01”,
要求:“129963”,
月份:“六月”,
回复:“80522”
}, {
日期:“2017-06-05”,
要求:“261162”,
月份:“六月”,
回复:“83743”
},{
日期:“2017-07-03”,
要求:“438860”,
月份:“7月”,
回复:“166107”
}];
var result={};
var组=对象减少(功能(acc、obj){
acc[目标月]=acc[目标月]| |[];
acc[目标月].推送(目标月);
返回acc;
}, {});
//控制台日志(组);
result.dataset=Object.keys(groups).map(function(key){
返回{
数据集:[{
“seriesname”:“Req”,
“数据”:组[键].map(函数(o){
返回{value:o.reqC};
})
}, {
“序列名称”:“Res”,
“数据”:组[键].map(函数(o){
返回{value:o.resC};
})
}]
};
});
控制台日志(结果)代码>
。作为控制台包装{max height:100%!important;top:0;}
这是两个不同对象中的属性,这里应该没有问题
[{
"dataset": [{
"seriesname": "reqC",
"data": [{
"value": "129963"
}, {
"value": "261162"
}]
}, {
"seriesname": "resC",
"data": [{
"value": "80522"
}, {
"value": "83743"
}]
}]
}, {
"dataset": [{
"seriesname": "reqC",
"data": [{
"value": "438860"
}]
}, {
"seriesname": "resC",
"data": [{
"value": "166107"
}]
}]
}]