2016-01-18 36 views
0

虽然我在其他几篇文章中看到过这个问题,但由于我从Twitter收到的数据,我的情况似乎略有不同。按日期对Javascript数组对象排序

下面是我用来排序JavaScript Array对象的逻辑,但问题似乎是由于日期格式的类型,逻辑实际上并未对数据进行排序。从Twitter的原始日期

样本格式:星期一1月18日17时24分46秒+0000 2016

var UserArraySorted = UserArray.sort(function(a,b){ 
       return new Date(a.createddate.substring(0,20)) - new Date(b.createddate.substring(0,20)); 
      }); 
for(i=0;i < UserArraySorted.length;i++){//Perform some logic here} 

反正是有根据我在我的代码中指定的createddate场我的数组排序?

+1

尝试新日期(Date.parse(a.createddate)) – ryan0319

+0

看看这个问题:http://stackoverflow.com/questions/7555025/jquery-fastest-way-to-sort-an-array-通过时间戳 – Tewdyn

回答

1

你已经差不多了。

下面的代码:

var UserArray = [{ 
    name: 'Diane', 
    createddate: '8/13/2014, 3:45:56 PM' 
}, { 
    name: 'Jane', 
    createddate: '5/15/2015, 4:19:03 PM' 
}, { 
    name: 'Mary', 
    createddate: '7/7/2013, 1:45:00 PM' 
}]; 

UserArray.sort(function(a, b) { 
    return new Date(a.createddate) - new Date(b.createddate); 
}); 

for (var i = 0; i < UserArray.length; i++) { 
    console.log(UserArray[i]); 
} 

输出:

Object {name: "Mary", createddate: "7/7/2013, 1:45:00 PM"} 
Object {name: "Diane", createddate: "8/13/2014, 3:45:56 PM"} 
Object {name: "Jane", createddate: "5/15/2015, 4:19:03 PM"} 

注意:使用数组排序函数将实际的数组排序。您将结果数组分配给一个新的变量名称UserArraySorted意味着原始UserArray没有更改(不确定这是否是您的意图)。

如果您不想更改原始数组顺序,则必须使用地图并对其进行排序。

无论如何,将字符串转换为日期类型应按日期排序。