【问题标题】:Sorting JSON object in javascript by date (String)按日期对 javascript 中的 JSON 对象进行排序(字符串)
【发布时间】:2014-03-25 15:16:03
【问题描述】:

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

fileListObj[id] = date;

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

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

我只知道如何在php中做到这一点

【问题讨论】:

    标签: javascript json sorting object


    【解决方案1】:

    包括moment.js

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

    【讨论】:

    • 没有对对象进行排序的方法,我这里没有使用数组:/
    【解决方案2】:

    首先,您需要编写/获取日期解析器。使用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);
    

    【讨论】:

      【解决方案3】:

      这是一个工作示例,排序后的表格将包含 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"));
      

      【讨论】:

      • 这是一个数组而不是对象的例子?不过答案很好
      • 对,您必须解析您的 Json,然后循环遍历键/值而不是数组值。抱歉,我认为真正的困难是使用非 iso 字符串日期进行排序
      猜你喜欢
      • 2014-05-12
      • 2014-07-10
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2018-07-07
      • 2021-09-06
      • 2016-07-26
      相关资源
      最近更新 更多