2010-10-04 22 views
14

Wiem, że to musi być stosunkowo proste, ale mam zestaw danych JSON, który chciałbym sortować według daty. Do tej pory natrafiałem na problemy na każdym kroku. W tej chwili mam datę zapisaną jako this.lastUpdated. Mam dostęp do jquery, jeśli to pomaga, ale zdaję sobie sprawę .sort() jest macierzystym JS. Z góry dzięki.sortowanie JSON według daty

+0

Jaki jest format pola daty? – orolo

+2

zobacz tutaj podobne pytanie http://stackoverflow.com/questions/979256/how-to-sort-a-json-array –

+0

JSON jest serializowanym formatem (ciąg znaków). Nie sądzę, abyś mógł cokolwiek z tym zrobić, dopóki nie skonwertujesz go na obiekt (eval lub niestandardową funkcję js framework). –

Odpowiedz

29

Zakładając, że masz tablicę obiektów JavaScript, wystarczy użyć funkcji niestandardowych sortowania:

function custom_sort(a, b) { 
    return new Date(a.lastUpdated).getTime() - new Date(b.lastUpdated).getTime(); 
} 
var your_array = [ 
    {lastUpdated: "2010/01/01"}, 
    {lastUpdated: "2009/01/01"}, 
    {lastUpdated: "2010/07/01"} 
]; 

your_array.sort(custom_sort); 

Array sort metoda sortuje tablicę używając funkcji zwrotnej, która jest przekazywana pary elementów w tablicy.

  • Jeśli wartość jest ujemna, pierwszy argument (a w tym przypadku), to poprzedzać drugi argument (b) w sortowanej tablicy.
  • Jeśli zwrócona wartość wynosi zero, ich położenie względem siebie pozostaje niezmienione.
  • Jeśli zwrócona wartość jest dodatnia, b poprzedza a w posortowanej tablicy.

Możesz przeczytać więcej na temat metody sorthere.

+0

Niezswojony JSON jest obiektem nie będącym tablicą. '.sort()' jest dostępne tylko w tablicach. –

+0

Przepraszam za przegraną! To był wypadek. Nie zwracałem uwagi, gdy kliknąłem na stronę, a teraz nie mogę tego zmienić. – Whitecat

+0

Bez obaw, dziękuję za wyjaśnienie! –

Powiązane problemy