1. sort() 함수
배열의 요소를 정렬한 후에 그 배열을 반환하는 함수(기본적으론 오름차순으로 정렬됨! ASCII 문자 순서대로)
arr.sort([compareFunction])
* compareFunction이 생략될 경우 , 배열의 요소들은 모두 문자열 취급되며, 유니코드 값 순서대로 정렬된다!
더보기
🍀 compareFunction : 정렬 순서를 정의하는 함수
- 이 함수는 두 개의 배열 요소를 파라미터로 입력 받음.
- 함수가 두 개의 배열 요소(a, b)로 입력 받을 경우
- a > b => return 1 // return value>0이므로 a는 b 뒤에 위치
- a < b => return -1 // return value<0이므로 a는 b 앞에 위치
- a = b => return 0 // a와 b의 순서 변함 없음
2. 문자 정렬
1) 문자열 오름차순 정렬 => 기본 문법 이용
let arr = ["a", "d", "z", "p", "j", "c", "k", "s"];
arr.sort();
console.log(arr); //['a', 'c', 'd','j', 'k', 'p','s', 'z']
2) 문자열 내림차순 정렬 => 비교 연산자(<, >) 이용
var strArray = ["BA", "BB", "AA", "AB", "CB", "CA"];
strArray.sort(function compare(a, b) {
if (a > b) return -1;
if (a < b) return 1;
return 0;
});
console.log(strArray); // ["CB","CA","BB","BA","AB","AA"]
3. 숫자 정렬
1) 한자리 수 정렬
let arr1 = [1, 4, 6, 8, 5, 3, 7];
arr1.sort();
console.log(arr1); // [1, 3, 4, 5, 6, 7, 8]
2) compareFunction생략한 채로 정렬 => 오류 발생
let arr2 = [74, 1, 8, 54, 23];
arr2.sort();
console.log(arr2); //[ 1, 23, 54, 74, 8 ] => 오류 발생
sort()함수는 정렬할 때 배열의 요소들을 문자열로 취급 => 숫자 정렬시 값을 비교해줄 수 있는 함수 넣어줘야함!!
3) 숫자 정렬(오름차순) => a-b
let arr3 = [13, 46, 52, 36, 75, 3];
arr3.sort(function (a, b) {
return a - b;
});
// arr3.sort((a, b) => a - b); //화살표 함수 이용
console.log(arr3); //[ 3, 13, 36, 46, 52, 75 ]
a, b 에 두 요소 전달해서 a-b로 크기를 비교한 후에
a>b이면 양수, a-b이면 음수를 리턴하여, 주어진 배열을 오름차순 정렬함.
4) 숫자 정렬(내림차순) => b-a
let arr3 = [13, 46, 52, 36, 75, 3];
arr3.sort(function (a, b) {
return b - a;
});
console.log(arr3); //[ 75, 52, 46, 36, 13, 3 ]
오름차순과 반대로 b-a를 해주면 내림차순으로 정렬됨을 볼 수 있다.
4. 2차원 배열 정렬
: 정렬 방식은 동일, 정렬 기준으로 삼고자 하는 배열 요소(인덱스로 구분)를 기준으로 비교 함수 작성해야함!
const arr5 = [
[10, 2],
[7, 8],
[3, 3],
[-1, 3],
[99, 99],
[-10, 10],
];
arr5.sort((prev, cur) => {
// 2번째 배열 요소를 기준으로 오름차순
if (prev[1] > cur[1]) return 1;
if (prev[1] < cur[1]) return -1;
});
console.log(arr5); //[ [ 10, 2 ], [ 3, 3 ], [ -1, 3 ], [ 7, 8 ], [ -10, 10 ], [ 99, 99 ] ]
const arr6 = [
[2, 9, 2],
[-1, -2, -3],
[0, 3, 3],
[12, -1, 6],
[9, 10, 11],
[-1, -1, -1],
[1, 0, -5],
];
arr6.sort((prev, cur) => {
// 3번째 배열 요소를 기준으로 내림차순
if (prev[2] < cur[2]) return 1;
if (prev[2] > cur[2]) return -1;
});
console.log(arr6);
//[[ 9, 10, 11 ],
// [ 12, -1, 6 ],
// [ 0, 3, 3 ],
// [ 2, 9, 2 ],
// [ -1, -1, -1 ],
// [ -1, -2, -3 ],
// [ 1, 0, -5 ]
//]
5. 객체 정렬
객체 속성을 기준으로 객체 정렬
var employees = [
{ name: "홍길동", salary: 30000 },
{ name: "김길동", salary: 10000 },
{ name: "마이콜", salary: 20000 },
];
employees.sort(function compare(a, b) {
return a.salary - b.salary;
});
console.log(employees);
//[{ name: '김길동', salary: 10000 },{ name: '마이콜', salary: 20000 },{ name: '홍길동', salary: 30000 }]
'자바스크립트(javascript)' 카테고리의 다른 글
기본형 데이터와 참조형 데이터 - 불변성, 가변성 (0) | 2023.04.13 |
---|---|
[프로그래머스 / 코딩테스트연습] x만큼 간격이 있는 n개의 숫자 (0) | 2023.04.10 |
댓글