将JSON数据拆分为两个数据点数组以与stackedbar chart canvasjs绑定的Javascript代码?
我的变量数据包含json数据,如下所示:将JSON数据拆分为两个数据点数组以与stackedbar chart canvasjs绑定的Javascript代码?,javascript,jquery,json,Javascript,Jquery,Json,我的变量数据包含json数据,如下所示: [ { "BillingMonth":"11", "BillingYear":"2016", "Volume":"72", "BillingMonthName":"November", "BillingProduct":"Product1" }, { "BillingMonth":"11", "BillingYear":
[
{
"BillingMonth":"11",
"BillingYear":"2016",
"Volume":"72",
"BillingMonthName":"November",
"BillingProduct":"Product1"
},
{
"BillingMonth":"11",
"BillingYear":"2016",
"Volume":"617",
"BillingMonthName":"November",
"BillingProduct":"Product2"
},
{
"BillingMonth":"12",
"BillingYear":"2016",
"Volume":"72",
"BillingMonthName":"December",
"BillingProduct":"Product1"
},
{
"BillingMonth":"12",
"BillingYear":"2016",
"Volume":"72",
"BillingMonthName":"December",
"BillingProduct":"Product2"
}
]
我想使用javascript/jquery拆分上述json数据,并将它们存储在两个变量data1中,data2包含json数据,结果如下:
{
type: "stackedBar",
legendText: "Product1",
showInLegend: "true",
data1: [
{ x: November, y: 72 },
{ x: December, y: 72 },
]
}
及
以上内容将绑定在canvas js stackedbar图表中
谢谢 嘿,这是一个解决方案,我在这方面做得很开心,希望它对你有用。我不确定您是否总是有两种产品
product1
,product2
,因此我选择了一种更通用的方法来计算n
产品的数量。结果是数组格式的,但您可以使用es6destructuring
获取两个变量data1
和data2
,就像我在下面做的那样:
/*
*helper函数以所需格式重新构造json
*/
函数格式(obj){
var格式化={
“类型”:“stackedBar”,
“legendText”:obj.BillingProduct,
“showInLegend”:“true”,
“数据”:[{
“x”:obj.BillingMonthName,
“y”:目标体积
}]
}
返回格式;
}
/*
*返回具有相应BillingMonth/Volume数据的唯一产品数组
*/
函数getStackedBarData(数据){
//将原始数组中的每个对象转换为所需结构
var formattedData=data.map(格式);
//删除重复产品并聚合数据字段
var stackedBarData=
格式化数据.reduce(函数(acc,val){
var getProduct=acc.filter(功能(项目){
return item.legendText==val.legendText
});
if(getProduct.length!=0){
getProduct[0].data.push(val.data[0]);
返回acc;
}
加速推力(val);
返回acc;
}, []);
返回stackedBarData;
}
风险值数据=[{
“BillingMonth”:“11”,
“计费年度”:“2016年”,
“卷”:“72”,
“比林蒙特纳姆”:“十一月”,
“BillingProduct”:“Product1”
}, {
“BillingMonth”:“11”,
“计费年度”:“2016年”,
“卷”:“617”,
“比林蒙特纳姆”:“十一月”,
“BillingProduct”:“Product2”
}, {
“BillingMonth”:“12”,
“计费年度”:“2016年”,
“卷”:“72”,
“比林蒙特纳姆”:“十二月”,
“BillingProduct”:“Product1”
}, {
“BillingMonth”:“12”,
“计费年度”:“2016年”,
“卷”:“72”,
“比林蒙特纳姆”:“十二月”,
“BillingProduct”:“Product2”
}]
var dataVars=getStackedBarData(数据);
var data1=dataVars[0];
var data2=dataVars[1];
console.log(data1);
console.log(data2)代码>由于语法问题,我需要javascript而不是ES6中的上述内容。@niten146我删除了ES6并将其保留为vanilla js,这是否解决了语法问题?如何在ajax成功时调用上述vanilla js??看来synatax错误现在消失了@niten146 ajax有一个success
字段,您可以使用的结果调用该函数。您可以帮助我将上述结果绑定到canvas js stackedbar图表中(11月和12月)??
{
type: "stackedBar",
legendText: "Product2",
showInLegend: "true",
data2: [
{ x: November, y: 617 },
{ x: December, y: 72 },
]
}