2016-03-30 14 views
1

canvasjsチャートを設定しようとしていますが、xとyをJSONから渡す必要があります。Jqueryの多次元配列とチャート

私はこのようにしようとすると、それが動作:

var parsed = $.parseJSON(JSON.stringify(data)); 
    var x = 0; 
    var chart = [{x: 1, y: 10}, {x: 2, y: 13}, {x: 3, y: 18}, {x: 4, y: 20}, {x: 5, y: 17},{x: 6, y: 10}, {x: 7, y: 13}, {x: 8, y: 18}, {x: 9, y: 20}, {x: 10, y: 17}]; 

        //alert(chart); 
    var options = { 
     animationEnabled: true, 
     data: [ 
     { 
     type: "spline", //change it to line, area, column, pie, etc 
     dataPoints: chart 
     }      ] 
    }; 
    $("#chartContainer").CanvasJSChart(options); 

しかし、私は、代わりにこのようにしようとすると、それは動作しません。

var parsed = $.parseJSON(JSON.stringify(data)); 
var counter = 0; 
var chart = [] 
for (var i in parsed) 
{ 
    counter++; 
    var profit = parsed[i].Profit; 
    chart.push({x: counter,y: profit}); 
} 

var options = { 
    animationEnabled: true, 
    data: [ 
    { 
     type: "spline", //change it to line, area, column, pie, etc 
     dataPoints: chart 
    }     
    ] 
    }; 

だから私は、その配列が適切に定義されていないと思います、カウンターと利益は100%OKです。

私はこのような配列必要があります:エラーが発生していないコンソールで

var chart = [{x: 1, y: 10}, {x: 2, y: 13}, {x: 3, y: 18}, {x: 4, y: 20}, {x: 5, y: 17},{x: 6, y: 10}, {x: 7, y: 13}, {x: 8, y: 18}, {x: 9, y: 20}, {x: 10, y: 17}]; 

を、単にチャートは空です。

FOUND SOLUTION:

var profit = parseInt(parsed[i].Profit); 
+0

も正確なエラーメッセージを入力してください。コンソールを見てください(Firefoxのctrl + shift + k)。 –

+0

コンソールが空です。エラーはありません。 – user1814358

答えて

0

$.map()を使用して、あなたのコードよりも少しよりよい:

var options = { 
    animationEnabled: true, 
    data: [{ 
     type: "spline", 
     dataPoints: $.map(parsed, function (i, item) { 
      return { 
       x: i + 1, 
       y: +item.Profit; // unary + causes type conversion to Number 
      } 
     }) 
    }] 
};