(28) Modern JavaScript - 배열 메소드 : sort, reverse

반응형

sort 메소드

sort 메소드는 배열 내에서 오름차순, 내림차순으로 요소를 정렬할 수 있으며

메소드에 아무런 아규먼트도 전달하지 않을 때에는

기본적으로 유니코드에 정의된 문자열 순서에 따라 정렬된다.

 

sort 메소드의 동작원리는 다음과 같다.

const letters = ['D', 'C', 'E', 'B', 'A'];
const numbers = [1, 10, 4, 21, 36000];

letters.sort();
numbers.sort();

console.log(letters); // (5) ["A", "B", "C", "D", "E"]
console.log(numbers); // (5) [1, 10, 21, 36000, 4]

sort 메소드를 사용했지만 아규먼트를 작성하지 않아

유니코드에 정의된 문자열 순서에 따라 결정되었다.


이번에는 sort 메소드에 다음과 같은 콜백함수를 아규먼트로 작성하였다.

const numbers = [1, 10, 4, 21, 36000];

// 오름차순 정렬
numbers.sort((a, b) => a - b);
console.log(numbers); // (5) [1, 4, 10, 21, 36000]

// 내림차순 정렬
numbers.sort((a, b) => b - a);
console.log(numbers); // (5) [36000, 21, 10, 4, 1]

하지만 sort 메소드를 사용할 때 주의해야 할 점은

메소드를 실행하는 원본 배열의 요소들을 정렬한다.

그래서 한 번 정렬하고 나면 정렬하기 전의 순서로 다시 되돌릴 수 없으니

미리 다른 변수에 복사해 두는 것이 좋다.

 


reverse 메소드

말 그대로 배열의 순서를 뒤집어 주는 메소드이며

reverse 메소드는 별도의 파라미터가 존재하지 않으며

단순히 메소드르 호출해주기만 하면 배열의 순서가 뒤집힌다.

단, sort 메소드와 마찬가지로 원본 배열의 요소를 뒤집어버리기 때문

이 점 주의해야한다.

 

reverse 메소드의 동작원리는 다음과 같다.

const letters = ['a', 'c', 'b'];
const numbers = [421, 721, 353];

letters.reverse();
numbers.reverse();

console.log(letters); // (3) ["b", "c", "a"]
console.log(numbers); // (3) [353, 721, 421]

 

반응형