2013-07-17 2 views
3

그래서 내가 이렇게 생성 된 객체가 자바 스크립트 :종류의 객체 후 더 subsort - 좋아

object = {}; 

object.set_1.date = <date object or unix time stamp> 
object.set_1.day = "Sunday"; 
object.set_1.total = 12; 

object.set_2.date = <date object or unix time stamp> 
object.set_2.day = "Sunday"; 
object.set_2.total = 19; 

object.set_3.date = <date object or unix time stamp> 
object.set_3.day = "Monday"; 
object.set_3.total = 15; 

그래서 네 번째.

이러한 개체를 일별로 정렬 한 다음 합계를 기준으로 일별 정렬하는 방법이 있습니까?

나는 이것을 달성하기 위해 여러 가지 다른 방법이 있다고 확신합니다. 어느 누구도이 일을 도울 수 있습니까? 무엇이 최선의 방법일까요?.

+3

배열에 개별 개체를 배치하고 속성이 3 개인 3 개의 개체가있는 경우 (9 개의 속성이있는 1 개의 개체 대신) Array.Sort는 사용자가 원하는 방법을 구현할 수있는 사용자 지정 정렬 함수를 사용할 수 있습니다. –

답변

10

@YuriyGalanter가 말한 것을 좀 더 자세히 살펴 보겠습니다. 이 접근 방식의

objArray = [ 
    { 
     "date": <date object or unix time stamp>, 
     "day": "Sunday", 
     "total": 12 
    }, 
    { 
     "date": <date object or unix time stamp>, 
     "day": "Sunday", 
     "total": 19 
    }, 
    { 
     "date": <date object or unix time stamp>, 
     "day": "Monday", 
     "total": 15 
    } 
]; 

장점 : 세 가지 특성을 가진 세 개의 객체를 포함하는 배열로 구 개 속성 기존 객체를 수정

새로운 구조

:의 약간의 구조 조정과 함께 시작합시다

위와 같은 방법으로 몇 가지를 얻을 수 있습니다. 하나 들어, 가독성. 각 객체의 시작과 끝 위치를 읽고 이해하고 어떤 객체가 어떤 속성을 포함하는지 이해하는 것이 훨씬 쉽습니다. 둘째, 자바 스크립트를 사용하여 정렬 작업을 쉽게 처리 할 수 ​​있습니다. 내장 된 .sort() 함수는 더 나은 단어가 부족하여 사용자 정의 정렬 알고리즘을 정의하는 선택적 매개 변수 - 함수 -를 사용할 수 있습니다. 의 그 살펴 보자 :

사용자 정의 자바 스크립트를 정렬

objArray.sort(function (objA, objB) { 
    var dayA = (objA.day).toLowerCase(); 
    var dayB = (objB.day).toLowerCase(); 

    // Sort first on day 
    if(dayA > dayB) { 
     return 1; 
    } else if (dayA < dayB) { 
     return -1; 
    } else { 
     // If the days are the same, 
     // do a nested sort on total. 
     var totalA = objA.total; 
     var totalB = objB.total; 

     if(totalA > totalB) { 
      return 1; 
     } else if (totalA < totalB) { 
      return -1; 
     } else { 
      return 0; 
     } 
    } 
}); 

위의 중첩 된 정렬 알고리즘 확장 할 수 있습니다, 단순히 return 0; 대신에 다음 정렬 기준을 추가하고 계속하기로. 이렇게하면 올바른 방향으로 시작할 수 있습니다.

행운과 행복 코딩!

+0

예! 정말 고마워! 나는 방금이 같은 것을 시도하기 시작했다. (문제에 대한 지식이별로 없다. 인터넷 검색을 너무 많이하지 못했다.) –

+0

@DustinSilk 문제가되지 않는 친구. 기꺼이 도와주세요. 실제로 당신의 입장에서 정말 좋은 타이밍이었습니다. 며칠 전에 내가 지금 일하고있는 프로젝트에 대해 아주 비슷한 커스텀 정렬을 작성 했으므로 여전히 뇌에서 신선했습니다. – War10ck

관련 문제