2013-11-14 75 views
0

我有一個關於Underscore.js中的where()函數的問題。 我有一個這樣的對象:在where()函數中返回一個對象大於或小於

var location = [{ id: "1", name: "house 1", date: "20-11-2013" }, 
       { id: "2", name: "house 2", date: "30-11-2013"}]; 

而且其工作方式與選擇過濾器這樣的形式:

From 
<input type="date" name="from" /> 

Until 
<input type="date" name="until" /> 

我怎樣才能使一個地方()函數返回的對象,其中日期大於From值且小於Until值。

回答

1

我想你不能這樣做使用where。你可以使用filterdoc代替:

var fromDate, untilDate; 
fromDate = $('[name="from"]').val(); 
fromDate = fromDate.split('-'); 
fromDate = new Date(fromDate[0], fromDate[1] - 1, fromDate[2]); 
untilDate = $('[name="until"]').val(); 
untilDate = untilDate.split('-'); 
untilDate = new Date(untilDate[0], untilDate[1] - 1, untilDate[2]); 
var result = _.filter(location, function (item) { 
    var date; 
    date = item.date.split('-'); 
    date = new Date(date[2], date[1] - 1, date[0]); 
    return date > fromDate && date < untilDate; 
}); 
+1

請問'lt'和'的日期gt'工作?你不需要先將它們轉換成日期對象,否則只是比較字符串。 – Andy

+0

是的,男人。我正在搜索下劃線的核心,並猜測我完全無法做到這一點。認爲我即將使用的地方和用回來的數組使用過濾器來做到這一點。謝謝! –

+0

是的,我也給了它一個鏡頭,而不使用下劃線,並提出這個:[jsfiddle](http://jsfiddle.net/rjRrH/)。 – Andy