2012-10-10 2 views
3

Chrome의 불안정한 정렬 문제는 알고 있지만 문자열 정렬시 이러한 문제를 해결할 방법이 없습니다.Chrome - 일관성없는 자바 정렬

myArray.sort(function(a, b){ 
     var typeA=a.toLowerCase(); 
     var typeB=b.toLowerCase(); 

     return (typeA < typeB) ? -1 : (typeA > typeB) ? 1 : 0; 
     }); 

는 FF 및 사파리에서 잘 작동하지만 크롬이 여전히 잘못된 순서를 반환합니다. 즉, typeA == typeB이면 0을 반환하지만 Chrome은 계속 이동하도록 선택합니다. 거기에 문자열을 정렬 다루는 수정 프로그램이 있습니까?

+0

당신은'array.sort()'대신에 여러분 자신의 정렬 알고리즘을 구현함으로써 이것을 고칠 수 있습니다. 그러나'array.sort()'를 자체적으로 작동시키는 방법이 있을지 모르겠습니다. – SamYonnou

+2

'myArray'의 내용은 무엇입니까? –

+0

코딩 주석과 마찬가지로 : 잘못 이해하지 말고, 삼항 연산자를 좋아합니까? '하지만 나는 결코 테스트해서는 안된다고 생각하는 사람들에게 동의합니다. 실제 생활은 코드 골프가 아니며, 'if ... else if ... else' 블록으로 나누는 것을 두려워하지 않아야합니다. –

답변

2

JS 사양에는 정렬 알고리즘이 안정적 일 필요가 없으므로이를 신뢰할 수 없습니다.

불안정한 정렬 문제를 해결하는 확실한 방법은 수동으로 다른 안정적인 알고리즘을 코딩하거나 비교 기능이 항상 두 요소를 서로 더 크게 또는 더 작은 것으로 취급하도록 정렬하기 위해 하나의 고유 한 키를 추가하는 것입니다 , 그러나 결코 동등하지 않다. 원래의 배열 인덱스는 그렇게 할 것입니다.