sort() 함수 정리
배열의 정렬 순서를 정의하기 위해 사용하는 메소드
arr.sort([compareFunction])
sort() 함수 숫자 오름차순으로 정렬하기
sort() 를 쓴다고해서 바로 오름차순으로 정렬이 되는 것이 아니다.
const arr1 = [21, 6, 3, 15];
const arr2 = ['banana', 'apple', 'orange'];
console.log(arr1.sort()); //[ 15, 21, 3, 6 ]
console.log(arr2.sort()); //[ 'apple', 'banana', 'orange' ]
파라미터(compareFunction)가 입력되지 않으면, 유니코드 순서에 따라서 값을 정렬한다.
15에서 1, 21에서 2, 3, 6 이런 순서로 반환된 것이 나왔다.
이렇게 될 때, 방법과 동작방식에 대해 이해하기 쉽게 정리한 것을 보고나서 동작 방식을 확실히 알게되었다.
1. 파라미터로 함수 정의하기
const arr = [21, 19, 3, 6];
arr.sort(function (a, b) {
if(a > b) {
return 1;
}else if(a === b){
return 0;
}else {
return -1;
}
})
console.log(arr); //[ 3, 6, 19, 21 ]
2. 두 숫자의 차가 양수값이냐, 음수값이냐를 이용
const arr2 = [21, 19, 3, 6];
arr2.sort(function (a, b) {
return a - b;
});
console.log(arr2); //[ 3, 6, 19, 21 ]
- 2번째의 동작방식 :
a와 b의 값에 arr2[0] 과 arr2[1]를 비교해서 21 - 19 = 2 로 결과값이 2로 양수이다.
return 값으로 양수 2를 전달하고 배열 안에있는 두 값의 순서를 바꾼다.
그 다음 arr2[0]과 arr2[2] 을 비교해서 21 - 3 = 18 로 결과값이 18로 양수이다.
그래서 또 21과 3의 순서를 바꾼다.
이런식으로 계속 두 인자를 비교해서 결과값이 양수가 나오면 순서를 바꾸고,
음수가 나오면 자리를 바꾸지 않고, 순서를 그대로 유지한다.
sort() 함수 숫자 내림차순으로 정렬하기
const arr = [21, 1, 3, 10];
arr.sort( function (a, b) {
return b - a;
})
console.log(arr); //[ 21, 10, 3, 1 ]
sort() 함수로 문자열 정렬하기
const arr = ['cat', 'banana', 'puppy', 'boy', 'a'];
arr.sort();
console.log(arr); //[ 'a', 'banana', 'boy', 'cat', 'puppy' ]
sort() 함수로 객체 정렬하기
// price 기준으로 오름차순 정렬하기
const arr = [
{ name: 'orange', price: 13500 },
{ name: 'apple', price: 10000 },
{ name: 'grape', price: 22500 },
];
arr.sort(function (a, b) {
return a.price - b.price;
});
console.log(arr);
/**
[
{ name: 'apple', price: 10000 },
{ name: 'orange', price: 13500 },
{ name: 'grape', price: 22500 }
]
*/
sort 함수 작동 방법을 몰랐는데 이렇게 가볍게 정리하니 이해가 더 잘됐다.
'TIL > 기록' 카테고리의 다른 글
[TIL] 10 (1) | 2024.01.08 |
---|---|
[TIL] 09 (1) | 2024.01.05 |
[TIL] 07 프로그래머스 (0) | 2024.01.03 |
[TIL] 06 문자열 정리 (0) | 2024.01.02 |
[TIL] 팀프로젝트 회고 (0) | 2023.12.29 |