es6 배열의 정렬 방법은 "sort()"입니다. sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다. 정렬 순서는 알파벳순 또는 숫자순이며, 기본값은 알파벳순 오름차순입니다. 이 메서드에는 함수여야 합니다. 이고 구문은 "array.sort(callback(a,b))"입니다.
이 튜토리얼의 운영 환경: 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]
위 코드에서 볼 수 있듯이 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]
반환 값에 대해 이야기해 보겠습니다. 위 코드에 작성된 반환 값 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입니다. 두 숫자를 비교하는 단계가 정렬로 이루어지기 때문입니다. 수학적으로는 큰 숫자 - 소수 = 양수, 작은 숫자 - 큰 숫자 = 음수가 발생합니다
예제 56 - 21 = 35가 양수이면 반환 값은 양수이고 양수는 위치 변경을 나타냅니다.
21 - 88 = 35는 음수이고 반환 값은 음수이며 음수입니다.
수학에서는 큰 수 - 소수 ≠ 양수, 소수 - 큰 수 ≠ 음수는 이렇게 축약할 수 없습니다. 따라서 sort는 서로를 빼는 것이 아니라 내부적으로 서로 비교한다는 것이 분명해야 합니다.
[관련 권장 사항:
javascript 비디오 튜토리얼,
web front-end위 내용은 es6 배열의 정렬 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!