Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON数据拆分为两个数据点数组以与stackedbar chart canvasjs绑定的Javascript代码?_Javascript_Jquery_Json - Fatal编程技术网

将JSON数据拆分为两个数据点数组以与stackedbar chart canvasjs绑定的Javascript代码?

将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":

我的变量数据包含json数据,如下所示:

[
    {
        "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
产品的数量。结果是数组格式的,但您可以使用es6
destructuring
获取两个变量
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 },
        ]
   }