2017-12-20 1 views
2

나는 다음과 같다 객체의 배열을 가지고 :정렬 필드에 의해 객체의 배열 다음 순으로

나는 결과 정렬 순서 내에서 알파벳 순으로 다음 을 favNum 필드에 의해 먼저 배열을 정렬 할
[ 
     {name: 'George', favNum: '1'}, 
     {name: 'Susan', favNum: '2'}, 
     {name: 'Bob', favNum: '1'}, 
     {name: 'Anna', favNum: '2'} 
    ] 

. 최종 결과는 다음과 같습니다.

[ 
     {name: 'Bob', favNum: '1'}, 
     {name: 'George', favNum: '1'}, 
     {name: 'Anna', favNum: '2'}, 
     {name: 'Susan', favNum: '2'} 
    ] 

Javascript와 관련된 방법이 있습니까? 컨텍스트를 제공하기 위해, 나는 다른 게시물을 통해 검색 한 후이 같은 시도했지만 여전히 문제가 올바른 정렬 순서를 얻는 데 : 먼저 정렬 할 수 있습니다

.sort((first, second) => { 
     if (first.favNum === second.favNum) { 
     return first.name > second.name ? 1 : -1 
     } 

     return first.favNum >= second.favNum 
    }) 
+1

작품 잘 저 https://jsfiddle.net/9xbe2nsr/ –

+0

사실, 먼저 favNum 필드를 기준으로 정렬하고, 다음 순으로는 작업을 수행해야합니다하려는 경우 역순으로 (즉, 우선, 알파벳순으로 정렬 한 다음 favNum 필드로 정렬). – Brian

+0

여기에서 확인하십시오 : https://jsfiddle.net/9xbe2nsr/ –

답변

3

을 내 favNum 다음 이름으로 정렬 localeCompare를 사용합니다.

var data = [{name: 'George', favNum: '1'},{name: 'Susan', favNum: '2'},{name: 'Bob', favNum: '1'},{name: 'Anna', favNum: '2'}] 
 
    
 
data.sort(function(a, b) { 
 
    return a.favNum - b.favNum || a.name.localeCompare(b.name) 
 
}) 
 

 
console.log(data)