development

Array.sort ()가 숫자를 올바르게 정렬하지 않음

big-blog 2020. 9. 15. 18:53
반응형

Array.sort ()가 숫자를 올바르게 정렬하지 않음 [중복]


이 질문에 이미 답변이 있습니다.

Chrome 14 및 Firefox 5 (다른 브라우저를 테스트하지 않음)에서 다음 코드는 숫자를 올바르게 정렬하지 않습니다.

<script>
a = new Array();
a.push(10);
a.push(60);
a.push(20);
a.push(30);
a.push(100);


document.write(a.sort())
</script>

10,100,20,30,60을 반환합니다.

나는 다른 숫자를 시도해 보았고 항상 0이없는 것처럼 작동하고 그렇지 않으면 숫자를 올바르게 정렬합니다. 왜 그럴까요?


나는 다른 숫자를 시도해 보았고 항상 0이없는 것처럼 작동하고 그렇지 않으면 숫자를 올바르게 정렬합니다. 왜 그럴까요?

Javascript의 기본 정렬 동작 인 사전 식 정렬 (예 : 객체를 문자열로 변환하고 사전 순서로 정렬)을 얻고 있습니다.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

array.sort([compareFunction])

매개 변수

compareFunction

정렬 순서를 정의하는 함수를 지정합니다. 생략하면 배열은 각 요소의 문자열 변환에 따라 사전 순으로 (사전 순서대로) 정렬됩니다.

ECMAscript 사양 (일반 자바 스크립트에 대한 표준 참조), ECMA-262, 3rd ed. , 섹션 15.4.4.11, 기본 정렬 순서는 사전에 나와 있지는 않지만 필요한 경우 주어진 비교 함수를 호출하는 개념적 정렬 함수에 대한 단계를 제공하고 그렇지 않으면 문자열로 변환 할 때 인수를 비교합니다. :

13. If the argument comparefn is undefined, go to step 16.
14. Call comparefn with arguments x and y.
15. Return Result(14).
16. Call ToString(x).
17. Call ToString(y).
18. If Result(16) < Result(17), return −1.
19. If Result(16) > Result(17), return 1.
20. Return +0.

a.sort(function(a,b){return a - b})

혼란 스러울 수 있습니다 .... 이 링크를 확인 하세요.


Javascript에서 배열의 기본 정렬은 알파벳순 검색 입니다. 숫자 정렬을 원하면 다음과 같이 시도하십시오.

var a = [ 1, 100, 50, 2, 5];
a.sort(function(a,b) { return a - b; });

정렬 기능을 사용할 수 있습니다.

var myarray=[25, 8, 7, 41]
myarray.sort( function(a,b) { return b - a; } );
// 7 8 25 41

Look at http://www.javascriptkit.com/javatutors/arraysort.shtml


try this:

a = new Array();
a.push(10);
a.push(60);
a.push(20);
a.push(30);
a.push(100);
a.sort(Test)

document.write(a);


function Test(a,b)
{
    return a > b ? true : false;
}

참고URL : https://stackoverflow.com/questions/7000851/array-sort-doesnt-sort-numbers-correctly

반응형