2013-05-16 54 views
2

我正在通過引用json數據繪製高圖中的多個系列。 json數據配置如下:高架圖只顯示系列中的最後一個元素

{"data": {"words with friends": [[1365034819.212261, 107], [1366071619.212278, 224]], "snacksss": [[1364775619.212285, 786], [1366849219.212291, 445]], "ticktackloot": [[1365207619.212297, 85], [1367799619.212303, 803]], "bike race": [[1364343619.212309, 293], [1367886019.212315, 572]]}} 

其中每個字典中的第一個也是唯一的元素是列表的列表。每個列表清單都包含一個帶有時間戳和任意值的列表。每個字典的關鍵代表了一個系列。問題在於該系列僅繪製每個列表中的最後一個列表。時間戳記在x軸上,在y上是任意值。我最終獲得了224,445,803和572分。我希望他們都出現。該代碼是下面:

var chart; // global 
function requestData() 
{ 
    $.ajax(
    { 
     url: 'test.json', 
     success: function(response) 
     { 
      // SINCE response IS TURNED INTO AN OBJECT LITERAL 
      // ASSOCIATIVE ARRAY, WE CAN ACCESS data 
      for (var key in response.data) 
      { 
       //extract every timestamp and multiply it by 1000 
       //because JS processes timestamps in microseconds. 
       //Reinsert in array 
       for(var counter=0;counter<response.data[key].length;counter++) 
       { 
        insert_array=[] 
        //insert_array.push([response.data[key][counter][0]*1000,response.data[key][counter][1]]) 
        insert_array.push([response.data[key][counter][0]*1000,response.data[key][counter][1]]) 

        if(counter==response.data[key].length-1) 
        { 
         var seriesData=insert_array; 

         var seriesName = key; 

         console.log(" processing " + seriesName + "=" + seriesData); 
         var series = 
         { 
          name: seriesName, 
          data: seriesData, 
          lineWidth: 15 
         }; 

         chart.addSeries(series); 
        } 
       } 
      } 
     }, 
     cache: false 
    }); 
} 

$(document).ready(function() 
{ 
    console.log("preparing document..."); 
    chart = new Highcharts.Chart(
    { 
     chart: 
     { 
      renderTo: 'container1', 
      type: 'bar', 
      events: 
      { 
       load: requestData 
      } 
     }, 
     title: 
     { 
      text: 'Top Offers' 
     }, 
     xAxis: 
     { 
      type: 'datetime', 
      title: 
      { 
       text: 'Offers' 
      } 
     }, 
     yAxis: 
     { 
      title: 
      { 
       text: 'Rewards' 
      }  
     }, 
     series: [] 
    }); 
}); 
+0

你正在循環中聲明變量,在每次迭代時覆蓋,所以只有最後一次迭代中的值保持不變。 – adeneo

+0

您的系列對象在輸出中的外觀如何? –

回答

1

嘗試改變科迪內部循環是這樣的:

//extract every timestamp and multiply it by 1000 because JS processes timestamps in microseconds. Reinsert in array 
insert_array=[] 

for(var counter=0;counter<response.data[key].length;counter++) 
    {      
     //insert_array.push([response.data[key][counter][0]*1000,response.data[key][counter][1]]) 
     insert_array.push([response.data[key][counter][0]*1000,response.data[key][counter][1]]) 
    ... 

以這種方式,insert_array變量將每個列表定義一次並且正確填寫;在你的實際代碼中,變量在每一個循環都被清除,所以它只會攜帶最後一個值。