카테고리 없음
[javascript] sort() 함수 공부
0to1ton
2023. 8. 19. 10:22
- 공통사항
- 기본적으로 문자열을 정렬함
- 문자 정렬
- 오름 차순
- 내림 차순
- 숫자 정렬
- 오름 차순
- 내림 차순
- 객체 정렬
- 오름 차순
- 내림 차순
// ---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;
}));