2012-09-19 54 views
2

我是新來的JavaScript,我無法弄清楚如何遍歷一些代碼,以便它基本上會創建一個數組,然後可以傳遞給我的plot變量。試圖迭代數據集

我不確定從哪裏開始。現在我有一段代碼需要我的第一個數據集(dataOne)並對其進行格式化,以便它可以進入我的plot變量。我基本上需要爲其他數據集多做三次 - 希望包含example.getDataSets函數以某種方式進行循環。

有沒有很好的方法來做到這一點?

這裏是我的代碼:

的script.js

var example = {}; 

example.data = { 
    dataOne: {data: [{"date":1333238400000,"data":23},{"date":1333324800000,"data":37},{"date":1333411200000,"data":49},{"date":1333497600000,"data":54},{"date":1333584000000,"data":30},{"date":1333670400000,"data":19},{"date":1333756800000,"data":15},{"date":1333843200000,"data":19},{"date":1333929600000,"data":145}], 
    dataTwo: {data: [{"date":1335830400000,"data":63},{"date":1335916800000,"data":77},{"date":1336003200000,"data":66}], 
    dataThree: {data: [{"date":1341100800000,"data":24},{"date":1341187200000,"data":50},{"date":1341273600000,"data":43},{"date":1341360000000,"data":39},{"date":1341446400000,"data":56},{"date":1341532800000,"data":66}], 
    dataFour: {data: [{"date":1333238400000,"data":71},{"date":1333324800000,"data":46},{"date":1333411200000,"data":66},{"date":1333497600000,"data":73},{"date":1333584000000,"data":105},{"date":1333670400000,"data":84}]} 
} 

example.getDataSets = function(){ 
    return ['dataOne', 'dataTwo', 'dataThree', 'dataFour'] 
} 

example.getSeries = function(month){ 
    return example.data[month] 
} 

example.processData = function(data){ 
    var newData = [] 
    for(var i = 0; i < data.length; i++){ 
     newData.push([data[i].date, data[i].data]) 
    }; 
    return newData; 
} 

我在HTML頁面腳本:

$.getScript("script.js") 
    .done(function() { 

    var b = example.getSeries('dataOne'); 
    var d = example.processData(b.data); 
    // first correct the timestamps - they are recorded as the daily 
    // midnights in UTC+0100, but Flot always displays dates in UTC 
    // so we have to add one hour to hit the midnights in the plot 
    for (var i = 0; i < d.length; ++i) 
     d[i][0] += 60 * 60 * 1000; 

    var plot = $.plot($("#placeholder"), [d] , options); 

任何建議都非常感謝!

回答

0

你將字符串文字'b'傳遞給example.processData而不是對象存儲在變量b中的ct。它應該是

var d = example.processData(b); 

另外example.getSeries返回一個對象不是數組。該數組位於對象的data屬性中。

此外,您的數據中有語法錯誤,在前3個對象的數組末尾缺少]}

+0

非常感謝!你知道一種方法,我可以將var d的值返回給控制檯嗎? example.processData應該對數據進行一些格式化,我需要一種方法來確保它能夠做到這一點。 – Shipoopi

+0

@Shipoopi我錯過了''''''''''後看到更新的答案。你想操作的數組是'b.data',所以把它傳遞給'example.processData'。 'example.processData(b.data)' – Musa

0

嘗試

var d = example.processData(b); 

console.log('b') 

將無法​​登錄你的data(在b變量)爲好,但字符串:-)