arr.sort([compareFunction])
compareFunction : 두 개의 파라미터를 비교하는 compare 함수의 반환값에 따라 정렬 순서(오름차순, 내림차순 등)를 정의.
compareFunction에 아무것도 넣지 않으면 유니코드 순서로 정렬됨.
//ex1
var arrNums = [4, 2, 7, 1];
arrNums.sort();
console.log(arrNums); //[1, 2, 4, 7]
//ex2
//숫자는 문자열로 변환되어 유니코드순으로 2, 20, 5 의 순서가 됨.
var arrNums2 = [2, 5, 20];
arrNums2.sort();
console.log(arrNums2); //[2, 20, 5]
//ex3
//대문자가 소문자보다 먼저 옴.
var arrChar = ['apple', 'Banana', 'banana'];
arrChar.sort();
console.log(arrChar); //['Banana', 'apple', 'banana']
compareFunction에 a, b 를 입력받았을 때
compare 함수의 리턴값이
- 음수면 a(첫 번째 입력값)가 b(두 번째 입력값) 앞으로 옴.
- 0이면 순서를 변경하지 않음.
- 양수면 b(두 번째 입력값)가 a(첫 번째 입력값) 앞으로 옴.
1. 사용방법 : 함수식 사용, 함수 사용
//ex1 함수식
var arrNums2 = [2, 5, 20];
arrNums2.sort(function(a, b){
return a - b;
});
console.log(arrNums2); //[2, 5, 20]
//ex2 함수
var arrNum2 = [2, 5, 20];
function compareNums(a, b){
return a - b;
};
console.log(arrNums2.sort(compareNums)); //[2, 5, 20]
2. 오름차순 예시
//ex1 오름차순1
var arrNums2 = [2, 5, 20];
arrNums2.sort(function(a, b){
if(a > b){return 1}
else if(a == b){return 0}
else if(b > a){return -1};
});
console.log(arrNums2); //[2, 5, 20]
//ex2 오름차순2
var arrNums2 = [2, 5, 20];
arrNums2.sort(function(a, b){
return a - b; //입력된 값의 크기 차를 이용([5, 2]면 3으로 양수, [2, 5]면 -3으로 음수)
//return b - a; //내림차순
});
console.log(arrNums2); //[2, 5, 20]
3. 대소문자 구분하지 않기
대소문자 구분하지 않고 정렬하기 위해서는 toUpperCase()를 사용해서 새로운 변수에 대문자로 변경한 a, b를 담고 그 새로운 변수를 비교해서 값을 리턴하면 됨.
var arrChar = ['apple', 'banana', 'orange', 'Banana'];
arrChar.sort(function (a, b){
var upA = a.toUpperCase();
var upB = b.toUpperCase();
if(upA < upB){return -1}
else if(upA == upB){return 0}
else if(upA > upB){return 1};
});
console.log(arrChar); // ['apple', 'banana', 'Banana', 'orange']
참고자료:
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
'SW공부 > JavaScript' 카테고리의 다른 글
[JavaScript] 배열에서 가장 큰 수 구하는법 (Function.prototype.apply(), 스프레드 연산자) (0) | 2023.02.22 |
---|---|
[JavaScript] 배열 하나의 문자열로 합치기 (join()) (0) | 2023.02.18 |
[JavaScript] 문자열을 배열로 변환하는 방법 (.split()) (0) | 2023.02.18 |
[JavaScript] 문자열 대소문자 변환 (0) | 2023.02.18 |
[JQuery] 값을 실시간으로 가져오는 함수 (0) | 2023.02.12 |