Array.sort( )
- sort 메서드는 배열의 요소를 오름차순으로 정렬한다
- 원본 매열을 직접 변경하며 정렬된 배열을 반환한다
const fruits = ['banana', 'apple', 'orange'];
fruits.sort();
// 원본 배열을 직접 변경한다
console.log(fruits); // [ 'apple','banana','orange' ]
한글 문자열도 오름차순으로 정렬한다.
// 한글 문자열도 오름차순으로 정렬한다.
const 과일 = ['오렌지', '바나나', '사과'];
과일.sort();
console.log(과일); // [ '바나나', '사과', '오렌지'];
내림차순으로 요소를 정렬하려면,
sort()를 사용해 오름차순으로 한 번 정렬하고, reverse()를 사용해 요소의 순서를 뒤집는다.
(reverse도 원본 배열을 수정한다)
const fruits = ['banana', 'apple', 'orange'];
fruits.sort(); // [ 'apple','banana','orange' ]
// 내림차순 정렬
fruits.reverse();
// reverse메서드도 원본 배열 수정
console.log(fruits); //['orange', 'banana', 'apple']
sort 메서드의 정렬 순서는 유니코드의 순서를 따르기 때문에,
- 배열이 숫자 타입의 요소여도 일시적으로 문자열로 변경 후에 유니코드 값을 기준으로 정렬된다.
이러한 sort 함수의 특징 때문에 우리는 sort 함수에 대한 커스터마이징을 해주어야 한다. => sort메서드에 비교함수를 인수로 전달해야 한다.
const point = [40, 100, 1, 5, 2, 25, 10];
// 오름차순 정렬 -> 우리가 생각하는 정렬 결과 [ 1, 2, 5, 10, 25, 40, 100 ]
point.sort();
// 유니코드 기준으로 정렬된 결과값
console.log(point); // [1, 10, 100, 2, 25, 40, 5]
비교 함수(Compare Function) 작성하기
- sort메서드에 인수로 넣을 비교함수의 결과값에 따라 오름차순과 내림차순이 결정된다.
- 비교함수는 1 , 0, -1의 값을 반환해야 한다.
- ( a, b ) => a - b : 비교함수의 반환값이 0보다 작으면 a를 우선 정렬한다.
- ( a, b ) => b - a : 비교함수의 반환값이 0보다 크면 b를 우선 정렬한다.
const point = [40, 100, 1, 5, 2, 25, 10];
// 유니코드 기준으로 정렬된 결과값
point.sort(); // [1, 10, 100, 2, 25, 40, 5]
// 오름차순 정렬
point.sort((a,b)=> a-b) //[1, 2, 5, 10, 25, 40, 100]
// 내림차순 정렬
point.sort((a,b)=> b-a) //[100, 40, 25, 10, 5, 2, 1]
'개발공부_Blog > JavaScript' 카테고리의 다른 글
Array.filter( ) : 반환값이 TRUE인 것들로 새로운 배열을 생성 (0) | 2022.10.11 |
---|---|
Array.map( ) : 실행한 결과를 가지고 새로운 배열을 생성한다 (0) | 2022.10.11 |
Array.찾기 메서드[ indexOf, includes ] (0) | 2022.10.09 |
Array. 삭제 메서드 [ pop, shift ] (0) | 2022.10.09 |
Array. 추가 메서드 [ push, unshift, concat, splice ] (0) | 2022.10.06 |
댓글