2013-03-06 9 views
0

배열에 여러 개의 객체가 있습니다. 객체에는 날짜 문자열 인 '시간'속성이 있습니다.ES5 sort() 및 날짜

items = [ 
    {time: "2013-03-01T10:46:11Z"}, 
    {time: "2013-03-03T10:46:11Z"}, 
    {time: "2013-03-02T10:46:11Z"} 
] 

'시간'속성으로 정렬을 정렬하고 싶습니다.

나는 Sort Javascript Object Array By DateJavascript Date Sorting을 읽었지만이 솔루션 중 하나를 만들 수는 없습니다 (날짜 객체로 변환하거나 문자열로 정렬) 할 수 없습니다.

내 정렬 기능 :

items.sort(function(first, second){ 
    return new Date(first.time) < new Date(second.time) ? 1 : -1; 
}) 

테스트 결과 :

items.forEach(function(item){ 
    console.log(item.time) 
}) 

반환 값 : 내가 잘못 뭐하는 거지

2013-03-01T10:46:11Z 
2013-03-03T10:46:11Z 
2013-03-02T10:46:11Z 

년 3 월 1 일 3 월 3 일 3 월 2 일?

+1

모든 "Z"날짜 (세계시) 인 경우 해당 날짜를 간단한 문자열로 정렬 할 수 있습니다. – Pointy

답변

1

비교 함수에서 "time"대신 "date"필드를 호출했습니다. 또한이 함수는 부울이 아닌 정수를 반환해야합니다.

return new Date(first.time) - new Date(second.time); 

모든 브라우저에서 작동하지 않을 수도 있습니다. 모든 시간이 표준시 인 경우 다음과 같이 문자열로 비교하십시오.

+0

답변 해 주셔서 감사합니다. 일관된 이름을 사용하도록 데모를 수정했으며 Array.sort() 문서 당 -1을 반환합니다. 편집 : 문제가 해결 된 것을 참조하십시오. – mikemaccana

+0

@nailer이 데모가 아닙니다 : http://jsfiddle.net/barney/uVgm4/ – Barney