2011-08-04 8 views
1

속성이있는 개체 배열이 있고 특정 속성으로 개체를 정렬하려면 어떻게해야합니까? 예를 들어 date 속성이있는 news 개체가 여러 개 있다고 가정 해 보겠습니다.개체 속성을 사용하여 개체 배열을 정렬하는 방법

어떻게 날짜별로 javascript의 각 개체를 정렬 할 수 있습니까?

+0

이것은 여러 번 여러 번 묻습니다. –

답변

3

배열 인 경우 도착 : 당신은, .sort()이 같은 것을 자신의 기능을 전달해야

arr.sort(function(a,b) { 
    return (a.date < b.date ? -1 : (a.date > b.date ? 1 : 0)); 
}); 
+0

미안 해요 '데이터'대신에'날짜'를 의미합니까? – locoboy

+0

그래, 내가 고쳤다 –

+0

정말 필요한 이러한 바깥 쪽 괄호입니까? –

0

:

someArray.sort(function(a, b) { 
    if (a.date < b.date) 
    return -1; 
    else if (a.date > b.date) 
    return 1; 
    return 0; 
}); 
함수 그냥 주어진 두을 비교할 수 있어야

객체가 무엇이 먼저 왔는지에 따라 음수 또는 양수로 반환하거나 동등한 경우 0으로 반환합니다. .sort() 함수는 나머지 부분을 처리합니다.

이렇게하면 원하는 객체의 속성을 정렬 할 수 있으며 첫 번째 속성이 동일한 경우 보조 정렬을 도입 할 수도 있습니다 (선택 사항). 반환 값을 무효화하여 오름차순 또는 내림차순을 제어 할 수도 있습니다.

+0

다른 답변이 게시되었음을 알리는 맨 위에있는 배너에 더 많은 관심을 기울여야합니다. 오 잘, 나는 코드와 함께 간단한 설명을 한 이후로 도전적으로 대답을 떠날 것이다. – nnnnnn

0

당신은 배열의 정렬 방법에 sort function를 제공 할 수 있습니다 :

// Sample data 
var newsArray = [ 
    {date: '2010/8/12'}, 
    {date: '2012/8/10'}, 
    {date: '2011/8/19'} 
]; 

// Sorting function 
function sortNewsArray(arr) { 
    return arr.sort(function(a, b) { 
     return new Date(a.date) - new Date(b.date); 
    } 
); 
} 

날짜 문자열을 단순히 날짜로 변환 할 수 있습니다 제공. 그렇지 않은 경우 데이터 나 정렬 함수에서 가능한 한 다시 형식화하십시오.

원래 순서 :

  1. 2010/8/12
  2. 2012년 8월 10일
  3. 2011년 8월 19일

정렬 된 순서 :

  1. 2010/8/12
  2. 2011/8/19
  3. 2012/8/10
관련 문제