我从DatePicker(End,Start)获取两个值。我想过滤数据并在这两个值之间获取数据。
但我无法让它以写作方式工作。
要关注问题,让我们考虑两个值(开始日期和结束日期)
// Here I want to
//var myDate = new Date();
var startDate = new Date(2013, 1, 28);
var endDate = new Date(2013, 1, 30);
我的数据如下:
var filter_data = {
"type": "FeatureCollection",
"features": [{
"geometry": {
"type": "Point",
"coordinates": [-73.98115508098644, 40.755304404503995]
},
"type": "Feature",
"id": 0,
"properties": {
"Date": "01/20/2013 08:58:03 PM",
"lat": 40.755304404503995,
"lon": -73.98115508098644,
"Address": "33 WEST 44 STREET"
}
},, {
"geometry": {
"type": "Point",
"coordinates": [-73.968253883967947, 40.765050901514641]
},
"type": "Feature",
"id": 1,
"properties": {
"Date": "01/29/2013 02:53:11 PM",
"lat": 40.765050901514641,
"lon": -73.968253883967947,
"Address": "564 PARK AVENUE"
}
},
]
};
为了过滤数据,我使用了两种不同的方法,但这些方法都不起作用。
var filteredData_2 = filter_data.where( ( n, i ) => n.properties.Date <startDate && n.properties.endDate ) ;
var filteredData = filter_data.filter(function(a){return a.properties.Date >startDate && a.properties.Date <endDate;});
console.log(filteredData_2)
console.log(filteredData)
这就像JsFiddle:
答案 0 :(得分:1)
您正在将Date
个对象[startDate
,endDate
]与纯字符串进行比较。
将a.properties.Date
包装到正确的Date
对象中:
... function(a){
aDate = new Date(a.properties.Date);
aDate < startDate && aDate < endDate;
})
答案 1 :(得分:1)
首先,您需要将字符串转换为JavaScript Date()对象:
function parseDate(dateString){
var dateParts = dateString.split(' ');
var dateArr = dateParts[0].split('/');
var timeArr = dateParts[1].split(':');
if(dateParts[2] === 'PM'){
timeArr[0] += 12;
}
return new Date(dateArr[0], dateArr[1], dateArr[2], timeArr[0], timeArr[1], timeArr[2]);
}
然后你需要实际过滤features
数组:
var filteredData = filter_data.features.filter(function(a){return parseDate(a.properties.Date) > startDate && parseDate(a.properties.Date) < endDate;});
编辑:moonwave99显示您可以通过将字符串作为参数传递来安全地创建Date(),从而将解决方案减少到:
var filteredData = filter_data.features.filter(function(a){return new Date(a.properties.Date) > startDate && new Date(a.properties.Date) < endDate;});
更新了小提琴:
简化答案的小提琴: