arr.sort([compareFunction])
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다.
compareFunction : 정렬 순서를 정의하는 함수. 생략하면 정렬할 때 배열의 요소들을 문자열(각 문자의 유니 코드 코드 포인트 값에 따라 정렬)로 취급합니다.
compareFunction(a, b) 형식의 a, b 매개변수를 사용합니다.const arr = [1, 30, 4, 21, 100000];
// 오름차순
// 방법 1
arr.sort((a, b) => {
if (a > b) return 1;
if (a === b) return 0;
if (a < b) return -1;
});
// 방법 2
arr.sort(function (a, b) {
return a - b;
});
// 화살표함수
arr.sort((a, b) => a - b);
console.log(arr); // [1, 4, 21, 30, 100000]
// 내림차순
// 방법 1
arr.sort((a, b) => {
if (a < b) return 1;
if (a === b) return 0;
if (a > b) return -1;
});
// 방법 2
arr.sort(function (a, b) {
return b - a;
});
// 화살표함수
arr.sort((a, b) => b - a);
console.log(arr); // [100000, 30, 21, 4, 1]
영어 대문자, 소문자가 섞여있을 경우, 대문자가 소문자보다 앞에 오도록 정렬됩니다.
오름차순 : 숫자 > 영어 대문자 > 영어 소문자 > 한글
내림차순 : 한글 > 영어 소문자 > 영어 대문자 > 숫자
const arr = ['march', 'March', 'jan', 'Jan', 'feb', 'Feb', 'dec', 'Dec'];
const arr2 = ['월', '화', '수', '목', '금'];
const arr3 = ['목', '금', 'march', 'March', 'dec', 'Dec', '3월', '12월'];
// 오름차순
// 방법 1
arr.sort();
// 방법 2
arr.sort((a, b) => a > b ? 1 : -1);
console.log(arr); // ['Dec', 'Feb', 'Jan', 'March', 'dec', 'feb', 'jan', 'march']
console.log(arr2); // ['금', '목', '수', '월', '화']
console.log(arr3); // ['12월', '3월', 'Dec', 'March', 'dec', 'march', '금', '목']
// 대소문자 구분없이 정렬
arr.sort((a, b) => {
const upperCaseA = a.toUpperCase();
const upperCaseB = b.toUpperCase();
if (upperCaseA > upperCaseB) return 1;
if (upperCaseA === upperCaseB) return 0;
if (upperCaseA < upperCaseB) return -1;
});
console.log(arr); // ['dec', 'Dec', 'feb', 'Feb', 'jan', 'Jan', 'march', 'March']
console.log(arr2); // ['금', '목', '수', '월', '화']
console.log(arr3); // ['12월', '3월', 'dec', 'Dec', 'march', 'March', '금', '목']
// 내림차순
// 방법 1
arr.sort((a, b) => {
if (a < b) return 1;
if (a === b) return 0;
if (a > b) return -1;
});
// 방법 2
arr.sort((a, b) => a > b ? -1 : 1);
console.log(arr); // ['march', 'jan', 'feb', 'dec', 'March', 'Jan', 'Feb', 'Dec']
console.log(arr2); // ['화', '월', '수', '목', '금']
console.log(arr3); // ['목', '금', 'march', 'dec', 'March', 'Dec', '3월', '12월']
// 대소문자 구분없이 정렬
arr.sort((a, b) => {
const upperCaseA = a.toUpperCase();
const upperCaseB = b.toUpperCase();
if (upperCaseA < upperCaseB) return 1;
if (upperCaseA === upperCaseB) return 0;
if (upperCaseA > upperCaseB) return -1;
});
console.log(arr); // ['march', 'March', 'jan', 'Jan', 'feb', 'Feb', 'dec', 'Dec']
console.log(arr2); // ['화', '월', '수', '목', '금']
console.log(arr3); // ['목', '금', 'march', 'March', 'dec', 'Dec', '3월', '12월']
var items = [
{ name: "홍길동", value: 32 },
{ name: "Edward", value: 21 },
{ name: "Sharpe", value: 37 },
{ name: "이영희", value: 45 },
{ name: 'The', value: -12 },
{ name: "김철수", value: 32 },
{ name: "Zeros", value: 37 },
];
// value 기준으로 정렬
items.sort(function (a, b) {
if (a.value > b.value) {
return 1;
}
if (a.value < b.value) {
return -1;
}
return 0;
});
// 화살표함수
items.sort((a, b) => {
if (a.value > b.value) return 1;
if (a.value < b.value) return -1;
return 0;
});
console.log(items);
/* [{name: 'The', value: -12},
{name: 'Edward', value: 21},
{name: '홍길동', value: 32},
{name: '김철수', value: 32},
{name: 'Sharpe', value: 37},
{name: 'Zeros', value: 37},
{name: '이영희', value: 45}] */
// name 기준으로 정렬
items.sort(function (a, b) {
var nameA = a.name.toUpperCase();
var nameB = b.name.toUpperCase();
if (nameA > nameB) {
return 1;
}
if (nameA < nameB) {
return -1;
}
return 0; // 이름이 같을 경우
});
// 화살표함수
items.sort((a, b) => {
var nameA = a.name.toUpperCase();
var nameB = b.name.toUpperCase();
if (nameA > nameB) return 1;
if (nameA < nameB) return -1;
return 0;
});
console.log(items);
/* [{name: 'Edward', value: 21},
{name: 'Sharpe', value: 37},
{name: 'The', value: -12},
{name: 'Zeros', value: 37},
{name: '김철수', value: 32},
{name: '이영희', value: 45},
{name: '홍길동', value: 32}] */