구문: arrayObject.sort(sortby); 매개변수 sortby는 선택사항입니다. 정렬 순서를 지정합니다. 함수여야 합니다.
sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다.
매개변수 없이 이 메소드를 호출하면 배열의 요소가 알파벳순, 더 정확하게는 문자 인코딩 순서로 정렬됩니다. 이를 달성하기 위해
먼저 비교를 위해 배열 요소를 문자열(필요한 경우)로 변환합니다.
다른 기준으로 정렬하려면 두 값을 비교하고 두 값의 상대적 순서를 설명하는 숫자를 반환하는 비교 함수를 제공해야 합니다.
비교 함수에는 a와 b라는 두 개의 매개변수가 있어야 하며, 반환값은 다음과 같습니다.
a가 b보다 작으면 정렬된 배열에서 a가 b 앞에 나타나야 하며 0보다 작은 값을 반환해야 합니다.
a가 b와 같으면 0을 반환합니다.
a가 b보다 큰 경우 0보다 큰 값을 반환합니다.
숫자를 정렬하려면 js의 sort() 메서드를 사용하세요.
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; alert(arr.sort(); </script>
돌아가기: [1, 116, 12, 18, 23, 34, 37, 50, 56, 8]
위 코드는 숫자를 크기에 따라 정렬하지 않습니다. 이를 위해서는 정렬 기능을 사용해야 합니다.
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; function sequence(a,b){ if (a>b) { return 1; }else if(a<b){ return -1 }else{ return 0; } } console.log(arr.sort(sequence)); </script>
반환: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (문제 없음)
물론 sort() 메서드에 정렬 기능을 작성할 수도 있습니다.
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; var arr2 = arr.sort(function(a,b){ if (a>b) { return 1; }else if(a<b){ return -1 }else{ return 0; } }) console.log(arr2); </script>
반환: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (어느 쪽도 문제 없음)
이런 식으로 단순화할 수도 있습니다
이유: a가 b보다 작으면 정렬된 배열에서 a가 b보다 먼저 나타나야 하며 0보다 작은 값이 반환됩니다.
a가 b와 같으면 0을 반환합니다.
a가 b보다 큰 경우 0보다 큰 값을 반환합니다
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; function sequence(a,b){ return a - b; } console.log(arr.sort(sequence)); </script>
반환: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (또한 정확함)
알파벳순으로 정렬하는 것이 훨씬 간단합니다. sort() 메서드를 직접 사용하면 됩니다.
<script> var arr = ['fanda','banner','find','zoom','index','width','javascript']; console.log(arr.sort()); </script>
반환: ["banner", "fanda", "find", "index", "javascript", "width", "zoom"]
이제 자바스크립트를 배우다가 sort() 함수가 좀 이상하다는 걸 발견해서(아마도 제 수준의 문제일지도 모르겠네요 -_-!), 발견한 내용을 여기에 기록하겠습니다. sort() 메소드의 매개변수는 매우 이상합니다. 함수임에도 불구하고 선택적 매개변수이기도 합니다. 매개변수가 없으면 기본적으로 문자열의 사전 순서로 정렬됩니다(숫자 값도 변환됩니다). 처리를 위해 문자열로 변환됩니다. 이 매개변수는 다음과 같은 두 값의 크기를 비교할 수 있습니다.
응용프로그램은 다음과 같습니다(이 예는 너무 고전적입니다!!).
<script type="text/javascript"> function sortNumber(a,b){return a - b} var arr = new Array(3) arr[0] = "10"; arr[1] = "5"; arr[2] = "4"; document.write(arr + "<br />"); document.write(arr.sort(sortNumber)); </script>
그러면 10,5,4의 원래 배열은 4,5,10이 됩니다. 다음은 이 프로세스에 대한 설명입니다. 분명히 sortNumber에는 두 개의 매개변수가 있어야 하지만 호출할 때 매개변수가 전혀 없습니다. ? 비교하다? arr이 첫 번째 숫자부터 sort를 호출하면 10 이전에는 비교할 숫자가 없어서 두 번째 숫자인 5로 갑니다. 이때 10은 5와 비교되기 때문에 이것은 sortNumber라고 불리며 10과 5를 전달합니다. 이것이 sort()의 특성입니다.