js
CHAPTER 31 / 34
읽기 약 2분
FUNCTION
배열 정렬: sort & 비교함수
핵심 개념
sort()는 기본적으로 유니코드 순서로 정렬하여 숫자 정렬 시 오류가 발생합니다. 비교 함수 (a, b) => a - b를 전달해야 올바른 숫자 정렬이 됩니다. 음수 반환 시 a가 앞, 양수 반환 시 b가 앞, 0이면 순서 유지입니다. sort()는 원본 배열을 변경합니다. toSorted()는 원본을 유지하는 ES2023 메서드입니다. 비교 함수를 지우며 정렬이 어떻게 깨지는지 확인하십시오.
코드 분석
const numbers = [10, 1, 8, 100, 3, 800, 25];
const units = [
{ name: 'T-600', threat: 6 },
{ name: 'T-800', threat: 8 },
{ name: 'T-1000', threat: 10 },
{ name: 'T-X', threat: 9 },
];
const wrongSort = [...numbers].sort();
const correctSort = [...numbers].sort((a, b) => a - b);
const descSort = [...numbers].sort((a, b) => b - a);
const byThreat = [...units].sort((a, b) => b.threat - a.threat);
document.write('<div style="color:#10b981;margin-bottom:4px;">기본 sort (버그): [' + wrongSort + ']</div>');
document.write('<div style="color:#22c55e;margin-bottom:4px;">올바른 sort 오름차순: [' + correctSort + ']</div>');
document.write('<div style="color:#f59e0b;margin-bottom:4px;">내림차순: [' + descSort + ']</div>');
document.write('<div style="color:#888;">위협도순: ' + byThreat.map(u=>u.name).join(' > ') + '</div>');AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
이 JS '배열 정렬' 코드의 잠재적 버그와 메모리 누수·this 바인딩·비동기 경합 위험을 분석해서 프로덕션 수준으로 개선해줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
'배열 정렬'를 실제 서비스에서 어떻게 쓰는지 구체적 사례 3개와 복사 가능한 코드를 초보자가 이해할 수 있게 보여줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
이 JS '배열 정렬' 관련 코드 전체의 실행 흐름을 분석하고 성능 병목과 최적화 방안을 우선순위로 알려줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
'배열 정렬'에서 개발자들이 가장 많이 하는 실수 Top 3을 솔직하게 알려주고 2026년 권장 패턴을 함께 알려줘.
⭐ 이것만 기억하세요
배열 정렬: sort & 비교함수는 이 3가지만 확실히 잡으세요
1.sort()를 비교함수 없이 호출하면 숫자 [10, 2, 1]이 [1, 10, 2]로 정렬되는 예상 밖의 결과가 나옵니다
2.sort(a, b => a - b)처럼 비교함수를 전달해야 하며, 음수면 a 먼저, 양수면 b 먼저, 0이면 순서 유지입니다
3.다음 챕터에서 날짜와 시간을 다루는 Date 객체를 배웁니다
공유하기
진행도 31 / 34