【问题标题】:How to sort objects by date ascending order?如何按日期升序对对象进行排序?
【发布时间】:2011-11-22 16:55:12
【问题描述】:

如果我有一个对象列表:

var objectList= LIST_OF_OBJECT;

列表中的每个对象都包含三个属性:“name”、“date”、“gender "

如何按“date”属性升序对列表中的对象进行排序?

(“日期”属性包含字符串值,如“2002-08-29 21:15:31+0500”)

【问题讨论】:

    标签: javascript jquery date sorting


    【解决方案1】:

    如果您的对象在 String 字段中包含 日期 信息:

    yourArray.sort(function(a, b) { return new Date(a.date) - new Date(b.date) })
    

    或者,如果他们在 Date 字段中有它:

    yourArray.sort(function(a, b) { return a.date - b.date })
    

    【讨论】:

    • 恭喜你在这里得到了唯一理智的答案。
    • 如果new Date在同一时区,你甚至根本不需要valid date strings
    【解决方案2】:

    Array.sort 方法接受一个排序函数,该函数接受两个元素作为参数,并且应该返回:

    • 0 如果第一个等于第二个
    • > 如果第一个大于第二个,则为 0。

    .

    objectList.sort(function (a, b) {
        var key1 = a.date;
        var key2 = b.date;
    
        if (key1 < key2) {
            return -1;
        } else if (key1 == key2) {
            return 0;
        } else {
            return 1;
        }
    });
    

    您很幸运,在您提供的日期格式中,在另一个日期之前的日期也是&lt;,而不是使用字符串比较时的日期。如果不是这种情况,您必须先将字符串转换为日期:

    objectList.sort(function (a, b) {
        var key1 = new Date(a.date);
        var key2 = new Date(b.date);
    
        if (key1 < key2) {
            return -1;
        } else if (key1 == key2) {
            return 0;
        } else {
            return 1;
        }
    });
    

    【讨论】:

    • 我将首先在每个值中定义一个新字段,其中包含已解析的日期以提高效率。
    • 如果不是对象列表,而是包含对象的对象,我想对对象内部的对象进行排序呢?
    • @Leem:任何标准中都没有描述应该枚举的顺序对象成员(需要引用)。您应该将对象转换为数组。
    • 如果 date 字段始终包含值“2002-08-29 21:15:31+0500”并且始终具有“+0500”,则可以在不解析为 @ 的情况下比较它们以进行排序987654327@对象。
    【解决方案3】:
    yourArray.sort(function(a, b) { 
     a = new Date(a.date);
     b = new Date(b.date);
     return a >b ? -1 : a < b ? 1 : 0;
    })
    

    【讨论】:

      【解决方案4】:

      你可以试试:

      <script src="https://cyberknight.000webhostapp.com/arrange.js">
      var a =[-1,0,5,4,3,2,6,1,1];
      var b = totzarrange(a)
      console.log(b);
      </script>
      

      【讨论】:

        猜你喜欢
        • 2015-09-25
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多