2016-01-18 3 views
0

Хотя я видел, что этот вопрос ответил на несколько других сообщений, мое дело несколько отличается из-за данных, которые я получаю от Twitter.Сортировка объекта массива Javascript по дате

Ниже приведена логика, используемая для сортировки объекта JavaScript Array, однако проблема заключается в том, что логика фактически не сортирует данные из-за типа формата, который является датой.

Пример формат необработанного даты от твиттера: Пны я 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 не изменен (не уверен, что это то, что вы намеревались).

Если вы не хотите менять исходный порядок массивов, вам необходимо использовать карту и отсортировать ее.

В любом случае преобразование строк в тип даты должно делать трюк при сортировке по датам.

Смежные вопросы