2015-05-31 3 views
0

Мне нужно иметь дело с массивом объекта, представляющим неупорядоченную коллекцию даты и времени (я не могу изменить структуру) и сортировать ее по самой последней дате.Как отсортировать массив объектов с самой последней даты в javascript

структура выглядит следующим образом:

{ 
    "H": 5, 
    "Date": { 
    Y: 2015 
    M: 3, 
    D: 21 
    } 
} 

Так что, как я сказал, что я должен уладить это с самой последней даты/час первым.

Заранее благодарен!

+5

Что вы пробовали до сих пор? Можете ли вы предоставить код, показывающий ваши попытки, чтобы мы могли помочь? –

+0

Вы можете сделать это с помощью [Array.sort] (http://stackoverflow.com/a/5002924/184595). В функции обратного вызова создайте объект 'Date' для' x' и 'y' –

+1

. Где ваш вопрос? Вы ничего не просите. Не говорите «напишите мой код», потому что это не сайт для кодирования. – pid

ответ

2

Вы можете прочитать его here on MDN

Массив имеет функцию сортировки:

arr.sort([compareFunction]) 

Если у вас есть:

var myArr=[{ 
    "H": 5, 
    "Date": { 
    Y: 2015, 
    M: 3, 
    D: 01 
    } 
},{ 
    "H": 5, 
    "Date": { 
    Y: 2015, 
    M: 3, 
    D: 21 
    } 
},{ 
    "H": 5, 
    "Date": { 
    Y: 2015, 
    M: 3, 
    D: 11 
    } 
}]; 

Вы можете отсортировать его с functionj, который принимает 2 аргумента - каждый из них объект сравнивается:

например

Если compareFunction (а, б) меньше, чем 0, своего рода а к более низким индексом, чем б, т.е. в первом месте.

Таким образом, вы можете теперь создать 2 даты, чтобы сравнить

myArr.sort(function (a,b){ return new Date(a.Date.Y,a.Date.M,a.Date.D,a.H,0,0) - new Date(b.Date.Y,b.Date.M,b.Date.D,b.H,0,0)}) 

вы можете заметить, что

new Date(1978,11,22) - new Date(1978,11,21) 

даст ряд:

в то время как

new Date(1978,11,22) 

даст другое представление

Fri Dec 22 1978 00:00:00 GMT+0200 (Jerusalem Standard Time) 

(в зависимости от местной окружающей среды)

http://jsbin.com/gusokamoye/3/edit

+0

Код может работать, но блок трудночитаемого кода с бессмысленными именами переменных и никаким объяснением не является хорошим ответом. – lonesomeday

+0

@lonesomeday Согласовано, следовательно отредактировано. –

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