일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 프론트엔드
- 비동기
- Sass
- 알고리즘
- 개발자
- css
- 코딩
- html
- http
- 자바스크립트
- TypeScript
- 취업
- DOM
- Next.js
- Git
- Vite
- React Query
- JavaScript
- dynamic import
- 공부
- 에러
- SSR
- 코딩테스트
- 백준
- csr
- error
- 취업준비
- 차이
- React
- Browser
- Today
- Total
minTech
[Javascript] Array.Sort() 본문
array는 각각의 요소에 순서가 정해져 있는 객체이다. 이 순서를 내가 원하는 대로 정리할 때 사용하는 함수가 바로 sort() 함수이다.
arr1.sort([compareFunction)
* sort() 함수의 경우 복사본이 따로 만들어지는 것이 아닌 원배열 그 자체가 정렬되는 것이기 때문에 주의한다.
- compareFunction
- 정렬 순서를 정의하는 함수이다.
- 함수의 리턴 값에 따라 오름차순/내림차순 이 결정된다.
1) return 값 < 0 : a가 b보다 앞에 오도록 정렬한다.
2) return 값 > 0 : b가 a보다 앞에 오도록 정렬한다.
- default 는 오름차순 정렬이기 때문에 만약 compareFunction 부분을 생각할 경우에는 오름차순 정렬을 한다.
- 유니코드 순서로 정렬을 실행한다.
sort() 함수의 경우 유니코드 순서로 배열을 정렬하기 때문에 몇 가지 내가 예상치 못한 결과가 생길 수 있다.
1) 만약 숫자를 sort() 함수로 정렬해보자
let arr = [1,2,5,10,56]
arr.sort()
console.log(arr)
<실행결과>
[1,10,2,5,56]
만약에 '5' 라는 숫자와 '10' 이라는 숫자가 들어간 array에 sort() 함수를 실행하면 '5' 가 더 크다고 판단되어 10보다 더 뒤의 순서로 배치된다 => 따라서 숫자의 내림/오름 차순으로 정렬할 때는 compareFunction 함수에 정렬 순서를 정의해준다.
[오름차순의 경우]
arr.sort((a,b) => a-b)
[내림차순의 경우]
arr.sort((a,b) => b-a)
2) 대문자와 소문자를 같이 넣어 정렬을 실행해보자.
let arr = ['A','B','b','O','a']
arr.sort()
console.log(arr)
<실행결과>
["A","B","O","a","b"]
위 결과도 sort() 함수는 유니코드 순서로 정렬하기 때문에 대문자와 소문자가 병행된 배열을 정리할 경우 대문자가 소문자보다 앞에 위치하는 것을 알 수 있다. => 따라서 배열에 있는 요소를 모두 대문자가 소문자로 통일한 후, 정렬을 실행한다.
이때, 숫자 정렬처럼 리턴 값이 a-b 혹은 b-a 가 되면 안된다. 반드시 -1/0/1 을 return 하도록 한다.
- localCompare()
이는 기존 문자열을 비교하여 비교 문자열에서의 순서가 전인지, 후인지, 동일한 위치에 있는지 알려주는 숫자를 리턴한다. 이 함수는 한글에 사용하면 유용하다.
'JavaScript' 카테고리의 다른 글
[JavaScript] DOM(Document Object Model) / 노드(Node) 접근법 (0) | 2024.01.17 |
---|---|
[JavaScript] 원하는 태그 선택하는 방법 (0) | 2024.01.16 |
[JavaScript] 브라우저 렌더링 원리 (0) | 2024.01.12 |
[JavaScript] Array 생성 및 요소 추가/제거 (0) | 2023.10.17 |
[JavaScript] Set Methods (0) | 2023.10.05 |