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

发布于 2024-12-06 05:11:55 字数 297 浏览 1 评论 0原文

如果我有一个对象列表:

var objectList= LIST_OF_OBJECT;

列表中的每个对象包含三个属性:“名称”、“日期”、“性别

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

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

If I have a list of object:

var objectList= LIST_OF_OBJECT;

each object in the list contains three attributes: "name", "date","gender"

How to sort the objects in the list by "date" attribute ascending order?

(the "date" attribute contain string value like "2002-08-29 21:15:31+0500")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

听你说爱我 2024-12-13 05:11:55

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

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

或者,如果它们在日期字段中包含该信息:

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

If your objects have the date information within a String field:

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

or, if they have it within a Date field:

yourArray.sort(function(a, b) { return a.date - b.date })
你好,陌生人 2024-12-13 05:11:55

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

  • <如果第一个小于第二个则为
  • 0 如果第一个等于第二个
  • 则为 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;
    }
});

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

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;
    }
});

The Array.sort method accepts a sort function, which accepts two elements as arguments, and should return:

  • < 0 if the first is less than the second
  • 0 if the first is equal to the second
  • > 0 if the first is greater than the second.

.

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;
    }
});

You're lucky that, in the date format you've provided, a date that is before another date is also < than the date when using string comparisons. If this wasn't the case, you'd have to convert the string to a date first:

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;
    }
});
尴尬癌患者 2024-12-13 05:11:55
yourArray.sort(function(a, b) { 
 a = new Date(a.date);
 b = new Date(b.date);
 return a >b ? -1 : a < b ? 1 : 0;
})
yourArray.sort(function(a, b) { 
 a = new Date(a.date);
 b = new Date(b.date);
 return a >b ? -1 : a < b ? 1 : 0;
})
九八野马 2024-12-13 05:11:55

您可以尝试:

var a =[-1,0,5,4,3,2,6,1,1];
var b = totzarrange(a)
console.log(b);

You can try:

var a =[-1,0,5,4,3,2,6,1,1];
var b = totzarrange(a)
console.log(b);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文