按日期在javascript中排序JSON对象(String)

时间:2014-03-25 15:16:03

标签: javascript json sorting object

我在JavaScript中有一个JSON对象,我正在尝试按日期排序对象。

fileListObj[id] = date;

 output : "#HIDDEN ID": "16/12/2013"

如何按最近日期对对象进行排序?

我只知道如何在php

中执行此操作

3 个答案:

答案 0 :(得分:0)

包括moment.js

fileListObj.sort(function(a,b) {
  return moment(b, 'DD/MM/YYYY').valueOf() - moment(a, 'DD/MM/YYYY').valueOf();
})

答案 1 :(得分:0)

首先,您需要编写/获取日期解析器。使用Javascript的原生Date对象为unreliable for parsing raw strings

然后你会想要使用Array.prototype.sort()

function parseDate(input) {
    var parts = input.split('/');
    return new Date(parts[2], parts[1]-1, parts[0]);
}

function sortAsc(a,b)
    { return parseDate(a.date) > parseDate(b.date); }

function sortDesc(a,b)
    { return parseDate(a.date) < parseDate(b.date); }

list.sort(sortAsc);

答案 2 :(得分:0)

这是一个工作示例,排序表将包含ISO格式日期

var dates = ["12/05/2012", "09/06/2011","09/11/2012"]
var sorted=[];
for(var i=0, i= dates.length;i++){
  var p = dates[i].split(/\D+/g);
  sorted[i]= new Date(p[2],p[1],p[0]);
}

alert(sorted.sort(function(a,b){return b-a}).join("\n"));

要获得相同的输入格式,您可以使用此功能:

function formatDate(d)
{
    date = new Date(d)
    var dd = date.getDate(); 
    var mm = date.getMonth()+1;
    var yyyy = date.getFullYear(); 
    if(dd<10){dd='0'+dd} 
    if(mm<10){mm='0'+mm};
    return d = dd+'/'+mm+'/'+yyyy
}
sorted.sort(function(a,b){return b-a})
formatSorted = []
for(var i=0; i<sorted.length; i++)
{
    formatSorted.push(formatDate(sorted[i]))
 }

alert(formatSorted.join("\n"));