>  기사  >  웹 프론트엔드  >  javascript_javascript 스킬의 sort() 메소드 사용에 대한 자세한 설명

javascript_javascript 스킬의 sort() 메소드 사용에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:41:321474검색

구문: 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() 메소드의 매개변수는 매우 이상합니다. 함수임에도 불구하고 선택적 매개변수이기도 합니다. 매개변수가 없으면 기본적으로 문자열의 사전 순서로 정렬됩니다(숫자 값도 변환됩니다). 처리를 위해 문자열로 변환됩니다. 이 매개변수는 다음과 같은 두 값의 크기를 비교할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

함수 sortNumber(a, b){
return a - b; //여기에 반환되는 것은 그 차이입니다. 0보다 작으면 a가 앞에 오고, 0보다 크면 b가 앞에 랭크됩니다. 뭐든지. (버블정렬방법!!)
}

응용프로그램은 다음과 같습니다(이 예는 너무 고전적입니다!!).

<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()의 특성입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.