본문 바로가기
카테고리 없음

[javascript] sort() 함수 공부

by 0to1ton 2023. 8. 19.
  1. 공통사항
    1. 기본적으로 문자열을 정렬함
  2. 문자 정렬
    1. 오름 차순
    2. 내림 차순
  3. 숫자 정렬
    1. 오름 차순
    2. 내림 차순
  4. 객체 정렬
    1. 오름 차순
    2. 내림 차순

 

// ---sort() 함수 공부 ---
// 문자 정렬
let words = ["에릭", "샘", "브라이언", "대니", "케제이", "알렉스", "스티븐", "톰"];
// 오름차순
console.log(words.sort()); // 오름차순: [ '대니', '브라이언', '샘', '스티븐', '알렉스', '에릭', '케제이', '톰'];
console.log(words.sort((a, b) => a-b)); // 오름차순: [ '대니', '브라이언', '샘', '스티븐', '알렉스', '에릭', '케제이', '톰'];
// 내림차순
console.log(words.reverse()); // 내림차순: ['톰', '케제이','에릭','알렉스', '스티븐', '샘', '브라이언', '대니'];
console.log(words.sort((a, b) => b-a)); // 내림차순: ['톰', '케제이','에릭','알렉스', '스티븐', '샘', '브라이언', '대니'];

// 숫자 정렬
let numbers = [1, 22, 5, 3333, 11, 444];
// 문제상황 발생: 기본 sort()는 문자열 정렬이기에 문자열로 정렬해버림. 1 다음에 5가 나와야하는데 11이 나옴
// 그치만 배열 내부 요소는
console.log(numbers.sort()); // [ 1, 11, 22, 3333, 444, 5 ];
console.log(numbers.sort(), typeof(numbers.sort()[0])); // [ 1, 11, 22, 3333, 444, 5 ], number;
// 오름차순
console.log(numbers.sort((a,b) => a-b)); // [ 1, 5, 11, 22, 444, 3333 ]
// 내림차순
console.log(numbers.sort(function(a,b){return b-a})); // [ 3333, 444, 22, 11, 5, 1 ]

// 객체 (Object) 정렬
let objects = [
{ name: 'banana', price: 3000 },
{ name: 'apple', price: 39900 },
{ name: 'coconut', price: 2000 }
];

// 오름차순
console.log(objects.sort((a,b) => {
if (a.name < b.name) {
return -1;
} else if (a.name > b.name) {
return 1;
} else {
return 0;
}
}));

// 내림차순
console.log(objects.sort((a,b) => {
return a.name < b.name -1 ? 1: a.name > b.name ? -1: 0;
}));