2016-01-18 147 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沒有更改(不確定這是否是您的意圖)。

如果您不想更改原始數組順序,則必須使用地圖並對其進行排序。

無論如何,將字符串轉換爲日期類型應按日期排序。