2014-12-22 2 views
0

개체가 채워진 배열이 있습니다. 이 개체는 sort1sort2의 두 값으로 시작합니다.개체의 두 값을 기반으로 개체가 채워진 배열을 어떻게 정렬합니까?

var arr_obj = [ 
    { 
     sort1:'3000', 
     sort2:'200', 
     value:'Value1' 
    }, 
    { 
     sort1:'4000', 
     sort2:'100', 
     value:'Value2' 
    }, 
    { 
     sort1:'6000', 
     sort2:'200', 
     value:'Value3' 
    }, 
    { 
     sort1:'6000', 
     sort2:'100', 
     value:'Value4' 
    }, 
    { 
     sort1:'2000', 
     sort2:'500', 
     value:'Value5' 
    } 
]; 

은 어떻게 sort1sort2의 값을 기준으로 개체를 정렬 가야합니까. Sort1이 우세하고 두 값의 값이 같을 경우 정렬 기능은 sort2을보고 어느 것이 먼저 오는 지 결정해야합니다.

내 예제 배열의 경우 출력이되어야합니다.

[ 
    { 
     sort1:'2000', 
     sort2:'500', 
     value:'Value5' 
    }, 
    { 
     sort1:'3000', 
     sort2:'200', 
     value:'Value1' 
    }, 
    { 
     sort1:'4000', 
     sort2:'100', 
     value:'Value2' 
    }, 
    { 
     sort1:'6000', 
     sort2:'100', 
     value:'Value4' 
    }, 
    { 
     sort1:'6000', 
     sort2:'200', 
     value:'Value3' 
    }  
]; 

난 그냥 배열에 대한 간단한 sort()를 사용했지만, 이것은 아마도 인덱스가 아닌 첫 번째 값에 보인다. 요청 된 출력을 얻는 방법을 아는 사람이 있습니까?

FIDDLE

답변

2

당신은이 종류로 비교 기능을 설정할 수 있습니다.

arr_obj.sort(function(a,b) { 
    if (a.sort1 === b.sort1) { 
    return a.sort2 - b.sort2; 
    } 
    return a.sort1 - b.sort1; 
}); 
0

이 시도 : -

arr_obj.sort(function(prev,next){ 
    if(prev.sort1 != next.sort1){ 
    return prev.sort1 > next.sort1; 
    }else{ 
    return prev.sort2 > next.sort2; 
    } 
}); 
관련 문제