2014-02-06 25 views
3

我怎麼能基本上在查詢日期underscore.js?我知道我不能做一個「之間」的條款,但看到下面的代碼作爲例子。我的目標是根據用戶指定的日期範圍將JSON數據加載到圖表中。如何處理JSON日期在underscore.js

var testdata=[{"date": "1/8/2014", "y": 50, "z": 466, "a": 35}, 
       {"date": "1/9/2014", "y": 325, "z": 201, "a": 85}, 
       {"date": "1/10/2014", "y": 250, "z": null, "a": 40}, 
       {"date": "1/11/2014", "y": 125, "z": 500, "a": 60}, 
       {"date": "1/12/2014", "y": 50, "z": 466, "a": 35}, 
       {"date": "1/13/2014", "y": 325, "z": 201, "a": 85} 
       ]; 

daterange = _.select(testdata, function(getdates){ return getdates between '1/9/2014' and '1/12/2014';}); 
console.log(daterange); 

更新:我有一些麻煩讓我的日期回調取代「startDate」和「endDate」從粗糙的兔子的例子。有什麼建議麼?

var cb = function(start, end) { 
        $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
        alert("Callback has fired: [" + start.format('MMMM D, YYYY') + " to " + end.format('MMMM D, YYYY') + "]"); 

        var testdata=[ 
         {"date": "1/2/2014", "y": 250, "z": null, "a": 40}, 
         {"date": "1/3/2014", "y": 125, "z": 500, "a": 60}, 
         {"date": "1/4/2014", "y": 50, "z": 466, "a": 35}, 
         {"date": "1/5/2014", "y": 325, "z": 201, "a": 85}, 
         {"date": "1/6/2014", "y": 250, "z": null, "a": 40}, 
         {"date": "1/7/2014", "y": 125, "z": 500, "a": 60}, 
         {"date": "1/8/2014", "y": 50, "z": 466, "a": 35}, 
         {"date": "1/9/2014", "y": 325, "z": 201, "a": 85}, 
         {"date": "1/10/2014", "y": 250, "z": null, "a": 40}, 
         {"date": "1/11/2014", "y": 125, "z": 500, "a": 60}, 
         {"date": "1/12/2014", "y": 50, "z": 466, "a": 35} 
         ]; 

        _.each(testdata, function(data){ 
        var dateParts = data.date.split('/') 
        data.date = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]) 
        }); 

        var startDate = new Date(2014,0,9) ; 
        var endDate = new Date(2014,0,12) ; 

        var requiredData = _.filter(testdata, function(data){ 
         return data.date >= startDate && data.date <= endDate; 
        }); 
+0

這是一個LOUS如果你希望進行相對比較,你可以用這種方式來表示一個日期。 –

回答

6

這些日期並不容易所以首先全部轉換爲JavaScript日期的工作:

_.each(testdata, function(data){ 
    var dateParts = data.date.split('/') 
    data.date = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]) 
}); 

然後提取你想使用_.filter數據:

var startDate = new Date(2014,0,9) ; 
var endDate = new Date(2014,0,12) ; 

var requiredData = _.filter(testdata, function(data){ 
    return data.date >= startDate && data.date <= endDate; 
}); 
+0

謝謝 - 你會推薦我從我的JSON文件開始JavaScript日期嗎?此外 - 我使用Bootstrap Datepicker,我不確定如何將它與JavaScript格式的日期完全整合(請參閱原始文章中的編輯)。 – davids12

0

你可能還想考慮使用像date.js這樣的庫來獲取與日期相關的東西。

有點風馬牛不相及,但仍然具有現實意義:我創造了大約按摩與underscorejs根據最新數據結合人力車圖表AA截屏,檢查出來,如果你想:http://tagtree.tv/d3-with-rickshaw-and-angular