如何使用JSON格式的日期过滤数据
How to filter the data using date from JSON format
我想使用日期过滤,但数据是JSON格式。我如何在JavaScript中使用日期过滤大型数据集?
例子:
data=[{date:'22-12-2014',name:'selva'},{date:'10-10-2010',name:'raja'},{date:'11-11- 2011',name:'suresh'}]
如果您只是想按时间筛选数据,您可以像这样查看数组中的所有对象:
var filteredData = [];
for(var index in data) {
var obj = data[index];
var date = parseDate(obj.date);
//Filter dates from 2011 and newer
if(date > new Date(2011, 0, 1))
filteredData.push(obj);
}
function parseDate(dateStr) {
var date = dateStr.split('-');
var day = date[0];
var month = date[1] - 1; //January = 0
var year = date[2];
return new Date(year, month, day);
}
//Filtered data now contains:
// [{"date":"22-12-2014","name":"selva"},{"date":"11-11- 2011","name":"suresh"}]
我确信您可以更好地解析日期,例如,通过以date构造函数接受的格式定义日期。
要获取与特定日期匹配的元素集,您可以使用filter
将它们提取到一个新数组中。
function getByDate(date){
return data.filter(function (el) {
return el.date == date;
});
}
var arr = getByDate('11-11-2011');
要按日期对数据集进行排序,首先需要将日期字符串转换为JS日期对象。这需要稍微调整日期字符串,以便可以正确解析。
function reformatDate(date) {
return arr = date.split('-').reverse();
}
var sortByDate = function (a, b) {
return new Date(reformatDate(a.date)) - new Date(reformatDate(b.date));
};
data.sort(sortByDate);
JSFiddle演示
我使用的日期格式是MM/DD/YY。下面是完整的示例-
var data=[
{date:'02/10/2018',name:'date is 10'},
{date:'02/14/2018',name:'date is 14'},
{date:'02/16/2018',name:'date is 16'},
{date:'02/20/2018',name:'date is 20'},
{date:'02/24/2018',name:'date is 24'},
{date:'02/26/2018',name:'date is 26'},
{date:'02/30/2018',name:'date is 30'},
{date:'03/01/2018',name:'date is 01'},
{date:'03/05/2018',name:'date is 05'},
{date:'02/23/2018',name:'date is name 23'},
]
var today = new Date();
var todayTime = new Date().getTime();
var days_after_20 = new Date().setDate(today.getDate()+20);
var days_before_5 = new Date().setDate(today.getDate()-5);
var result = data.filter(function (item) {
var itemTime = new Date(item.date).getTime()
return itemTime >= days_before_5 && itemTime <= days_after_20;
})
console.log(result);
要获取与某个日期匹配的元素集,可以使用filter将它们提取到一个新的数组中。
var tempArray= data.filter(function (d, i) {
return d >= startDate && d <= endDate;
})
相关文章:
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 如何从Wijmo过滤flexgrid中的日期
- 过滤日期范围 angularjs 时出错
- AngularJS过滤格式化的日期
- 在JavaScript中,按日期和之后的名称过滤数组
- 如何在 Angular js 中按日期过滤数据
- JavaScript 智能日期过滤
- 按输入日期过滤 ng 重复
- 拉拉维尔角度如何过滤碳串上的日期
- Dojo 网格:将过滤条件发送到服务器,具有有效日期
- 如何使用角度js按月和年正确过滤日期
- 酒窝.js使用日期范围过滤 X 轴
- 角度JS过滤日期
- ng 表过滤毫秒日期数据
- angular - 过滤开始日期和结束日期在所选月份和年份范围内的所有对象
- 如何在角度js中使用日期过滤数据
- 为morris图表添加了日期过滤组件
- 如何使用动态日期过滤oData调用
- JavaScript | AngularJS:根据日期过滤结果过滤项目
- 如何使用JSON格式的日期过滤数据