>웹 프론트엔드 >프런트엔드 Q&A >es6 배열의 정렬 방법은 무엇입니까

es6 배열의 정렬 방법은 무엇입니까

青灯夜游
青灯夜游원래의
2022-04-11 18:04:2313003검색

es6 배열의 정렬 방법은 "sort()"입니다. sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다. 정렬 순서는 알파벳순 또는 숫자순이며, 기본값은 알파벳순 오름차순입니다. 이 메서드에는 함수여야 합니다. 이고 구문은 "array.sort(callback(a,b))"입니다.

es6 배열의 정렬 방법은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.

sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다.

  • 정렬 순서는 알파벳 또는 숫자, 오름차순 또는 내림차순일 수 있습니다.

  • 기본 정렬 순서는 알파벳순으로 오름차순입니다.

그 중 sort() 메소드에는 선택적 매개변수가 있습니다. 그러나 이 매개변수는 함수여야 합니다. 배열의 sort() 메소드를 호출할 때 매개변수가 전달되지 않으면 배열의 요소가 알파벳순(문자 인코딩 순서)으로 정렬됩니다. 다른 기준에 따라 정렬하려면 매개변수를 전달해야 합니다. 이 함수는 두 값을 비교하여 두 값의 상대적인 순서를 설명하는 숫자를 반환합니다.

구문:

array.sort(callback(a,b))
Parameters Description
callback(a,b)

선택 사항입니다. 정렬 순서를 지정합니다. 함수여야 합니다.

반환 값: 배열 유형, 배열에 대한 참조입니다. 배열은 원본 배열에 따라 정렬되며 복사본이 만들어지지 않습니다.

예:

 //sort的基本使用
  let arr = [8, 1, 4, 3, 7, 9]
  let Arr = [21, 55, 29, 105, 45]
  console.log(arr.sort()) //[1, 3, 4, 7, 8, 9]
  console.log(Arr.sort()) // [105, 21, 29, 45, 55]

es6 배열의 정렬 방법은 무엇입니까

위 코드에서 볼 수 있듯이 sort() 메서드는 0-9 범위의 배열만 올바르게 정렬할 수 있습니다. 두 자리 이상의 배열 항목에 대해 반환 값이 제공되지만, 정렬된 결과가 아닙니다. 이는 sort()가 숫자 값이 아닌 ASCLL 코드를 기준으로 내부 정렬을 수행하기 때문입니다. 그러면 이 방법은 두 자리 이상의 숫자에 대해서는 공식적인 정렬도 수행할 수 없습니다. 소금에 절인 생선과 어떻게 다른가요?

여기 중요한 점이 있습니다. sort()는 두 개의 형식 매개변수를 전달하는 콜백(a, b)을 수신할 수 있습니다. 즉, a와 b는 크기를 비교할 두 요소이며 반환이 있어야 합니다. 값.

  • 콜백의 반환 값이 양수이면 b가 a 앞에 정렬됩니다.

  • 콜백의 반환 값이 음수이면 a가 b 앞에 정렬됩니다. 콜백 시 반환 값이 0이면 a와 b의 위치는 변경되지 않습니다.

  • 정렬이 실행될 때마다 원래 배열의 두 매개 변수 a와 b의 위치가 반환 값에 따라 교환됩니다. ;

  • 위의 설명을 읽고 나면 반환 값이 어디에 있는지 확실히 묻게 될 것입니다. 매개변수 ab의 실제 매개변수는 누구입니까? 다음 코드를 이해하면 모든 것이 어린이의 놀이입니다!

     //sort 内部写法
      let Arr = [56, 21, 29, 105, 45]
      Arr.sort(function(a, b) { //callback
          if (a > b) { // a b 分别是Arr中的 56 21
              return 1  //返回正数 ,b排列在a之前
          } else {
              return -1 //返回负数 ,a排列在b之前
          }
      })
      console.log(Arr) //[21, 29, 45, 55, 105]
  • 실행 논리:

콜백( a , b )에서 수신한 두 매개변수는 a = > 현재 항목이고 b는 현재 항목의 다음 항목입니다. 다음 항목 위치가 변경되지 않은 경우 b는 다음 항목의 인덱스 -1입니다. 순회 종료를 판단하는 조건은 b 매개변수가 값을 얻지 못하고 종료된다는 것입니다. 코드에서 현재 항목의 인덱스는 3이고 b는 다음 항목, 즉 4배열의 4번째 항목을 구할 수 없고, 순회를 계속하기 위한 조건이 충족되지 않아 순회가 종료됩니다!

es6 배열의 정렬 방법은 무엇입니까반환 값에 대해 이야기해 보겠습니다. 위 코드에 작성된 반환 값 1과 -1은 코드에 어떤 반환 값을 작성하든 상관없이 1이 양수이고 -1이 음수라는 상징적 표현일 뿐입니다. , 정렬은 반환 값이 양수인지 여부만 내부적으로 확인합니다. 방정식이 true인 경우에도 100을 반환하고 그렇지 않은 경우 -10000을 반환합니다.

약어 설명:

//简写 最终版  
  let Arr = [56, 21, 88, 10, 5, 77]
  Arr.sort((a, b) => a - b) //箭头函数不加大括号指向这个函数的返回值,可以不写return关键字
  console.log(Arr) //[5, 10, 21, 56, 77, 88]

위 그림에서 알 수 있듯이 콜백 함수의 내부 처리 방식은 두 숫자를 비교하는 것이 아니라 a - b입니다. 두 숫자를 비교하는 단계가 정렬로 이루어지기 때문입니다. 수학적으로는 큰 숫자 - 소수 = 양수, 작은 숫자 - 큰 숫자 = 음수가 발생합니다

es6 배열의 정렬 방법은 무엇입니까예제 56 - 21 = 35가 양수이면 반환 값은 양수이고 양수는 위치 변경을 나타냅니다.

21 - 88 = 35는 음수이고 반환 값은 음수이며 음수입니다.

수학에서는 큰 수 - 소수 ≠ 양수, 소수 - 큰 수 ≠ 음수는 이렇게 축약할 수 없습니다. 따라서 sort는 서로를 빼는 것이 아니라 내부적으로 서로 비교한다는 것이 분명해야 합니다.

[관련 권장 사항:

javascript 비디오 튜토리얼

,

web front-end

]

위 내용은 es6 배열의 정렬 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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