[JS] Array.sort

2023. 10. 12. 08:57JavaScript

| Array.sort

자바스크립트의 sort() 메서드는 배열의 요소를 적절한 위치에 정렬 한 이후 배열을 반환한다.

주의해야 할 점은 복사본이 만들어지는 것 이 아닌 원 배열이 정렬 된다.

로직에 따라 원본을 유지할 것인지 아니면 정렬 된 값을 반환만 하는 함수인지 꼭 구분 지어서

로직을 작성해야 한다.

 

| Number 정렬

숫자를 정렬하면 내가 원하는 결과값이 안나온다.

그 이유는 sort 메소드의 기본 정렬 순서는 다음과 같다.

- 문자열 유니코드(Unicode) 코드 포인트(code point) 에 따른다.

- 배열의 모든 항목이 문자열로 변환된 이후 문자열의 유니코드 값이 선택된 다음에 정렬을 진행한다.

 

그래서 comparator function(선택적 함수)을 인자로 전달 해야 한다.

 

| Comparator function (선택적 함수)

comparator fuction 을 통해 원하는대로 정렬을 할 수 있다.

만약 a 와 b 라는 두가지의 항목이 있는 상태에서

음수를 반환하면 자바 스크립트는 두 항목을 비교할 때 마다 인자로 받은 함수를 호출 한다.

 

- 함수가 음수를 반환 한다면 자바스크립트는 a 가 b 앞으로 정렬 되도록 해준다.

- 양수를 반환 하면 a 가 b의 뒤로 정렬 된다.

- 0 을 반환 한다면 a 와 b를 동일하게 취급하고 한꺼번에 정렬한다.

 

| 원본 배열 유지

만약 원본을 유지 할 일이 생기면 변수를 하나 만들어서 기존의 배열을 복사 해둔다.

배열을 다룰 때는 항상 원본은 유지하는게 좋다고 생각한다.

데이터 무결성을 지켜가며 코드를 작성해야 한다.

그리고 원본 배열을 유지해가며 다른 로직은 원본배열에서 진행하는 것이 맞다고 생각한다.