js将带有日期格式的数组对象按时间降序重新排列,最后打印数组对象的日期

需求:后台将一个带有日期格式(不是时间戳)的数组对象给到前端,前端打印这个数组对象的日期时需要按时间降序排列

思路:

1.先将对象中的日期字段变成时间戳,然后通过sort()来排序,接着将对象中的时间戳变成日期; 2.先给对象增加一个字段publishTimeNew,用来保存时间戳;然后通过sort()来排序publishTimeNew

虽然第二种思路多增加了一个publishTimeNew字段占用空间,但是减少了最后将时间戳变成日期的操作,所以我选择了第二个思路,下面是我的实现:

<script>
    var data = [
    {
        id: 1,
        publishTime: "2018-07-02 10:39:43"
    },
    {
        id: 2,
        publishTime: "2018-07-14 10:39:43"
    },
    {
        id: 3,
        publishTime: "2018-07-15 10:39:43"
    },
    {
        id: 4,
        publishTime: "2018-07-13 10:39:43"
    }]
    var dateToTime = function(str){
		return (new Date(str.replace(/-/g,'/'))).getTime(); //用/替换日期中的-是为了解决Safari的兼容
    }
    for(var i=0; i < data.length; i++){
        data[i].publishTimeNew = dateToTime(data[i].publishTime);
    }
    data.sort(function(a, b) {
                    return b.publishTimeNew> a.publishTimeNew ? 1 : -1;
    });
    console.log(data);
</script>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a419419/article/details/83546233
今日推荐