如何使用JSON格式的日期过滤数据

Sur*_*Ram 3 javascript json filter

我想使用日期进行过滤,但数据为JSON格式。如何使用JavaScript中的日期过滤大型数据集?

例:

data=[{date:'22-12-2014',name:'selva'},{date:'10-10-2010',name:'raja'},{date:'11-11- 2011',name:'suresh'}]
Run Code Online (Sandbox Code Playgroud)

Hen*_*son 5

如果您只想按时间过滤数据,则可以像这样遍历数组中的所有对象:

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"}] 
Run Code Online (Sandbox Code Playgroud)

我确信您可以通过例如用Date构造函数接受的格式定义日期来更好地解析日期。


And*_*ndy 5

要获取与特定日期匹配的元素集,可以使用filter将它们提取到新数组中。

function getByDate(date){
  return data.filter(function (el) {
    return el.date == date;
  });
}

var arr = getByDate('11-11-2011');
Run Code Online (Sandbox Code Playgroud)

要按日期对数据集进行排序,您需要首先将日期字符串转换为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);
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示