Sunday, December 31, 2006
자바스크립트] 대소문자 구분 없이 문자열 배열 정렬/소트/소팅; JavaScript Sort Ignore Case, String Array
영문 문자열을 ABC순으로 정렬할 때, 기본적으로 대소문자를 구분하여 소팅하기에 결과가 부자연스럽게 나옵니다. 대소문자 구분 없이 영문 문자열을 정렬하는 방법입니다.
비교 함수인 compStringIgnoreCase() 의 부등호를 반대로 하면, "대소문자 구분없이 역순 정렬"을 할 수 있긴 하지만, 그러면 aaa와 AAA 의 순서가 좀 이상하게 나오는 문제가 있기에, reverse() 로 뒤집어 주었습니다. reverse()를 사용하여 역순으로 만든다고 해도 속도가 느려지지는 않습니다.
▶▶ 자바스크립트] 문자열 배열, 가나다 순 정렬/내림차순 소팅; Sort String Array, JavaScript
JavaScript: 영문 알파벳 대소문자 구분 없이 소팅 예제
<script type="text/javascript">
// 문자열 배열 선언과 초기화
var names = new Array( 'bbb', 'AAA', 'DDD', 'CCC', 'aaa' );
// 대소문자 구분하여 정렬
document.write(names.sort() + '<br />');
// 출력 결과: AAA,CCC,DDD,aaa,bbb
// 대소문자 구분 없이 정렬
document.write(names.sort(compStringIgnoreCase) + '<br />');
// 출력 결과: AAA,aaa,bbb,CCC,DDD
// 대소문자 구분 없이 내림차순 정렬
var s = names.sort(compStringIgnoreCase);
s.reverse();
document.write(s + '<br />');
// 출력 결과: DDD,CCC,bbb,aaa,AAA
// 대소문자 구분없이 정렬에, 내부적으로 필요한 비교 함수
function compStringIgnoreCase(a, b) {
if (a.toLowerCase() < b.toLowerCase()) return -1;
if (b.toLowerCase() < a.toLowerCase()) return 1;
return 0;
}
</script>
// 문자열 배열 선언과 초기화
var names = new Array( 'bbb', 'AAA', 'DDD', 'CCC', 'aaa' );
// 대소문자 구분하여 정렬
document.write(names.sort() + '<br />');
// 출력 결과: AAA,CCC,DDD,aaa,bbb
// 대소문자 구분 없이 정렬
document.write(names.sort(compStringIgnoreCase) + '<br />');
// 출력 결과: AAA,aaa,bbb,CCC,DDD
// 대소문자 구분 없이 내림차순 정렬
var s = names.sort(compStringIgnoreCase);
s.reverse();
document.write(s + '<br />');
// 출력 결과: DDD,CCC,bbb,aaa,AAA
// 대소문자 구분없이 정렬에, 내부적으로 필요한 비교 함수
function compStringIgnoreCase(a, b) {
if (a.toLowerCase() < b.toLowerCase()) return -1;
if (b.toLowerCase() < a.toLowerCase()) return 1;
return 0;
}
</script>
비교 함수인 compStringIgnoreCase() 의 부등호를 반대로 하면, "대소문자 구분없이 역순 정렬"을 할 수 있긴 하지만, 그러면 aaa와 AAA 의 순서가 좀 이상하게 나오는 문제가 있기에, reverse() 로 뒤집어 주었습니다. reverse()를 사용하여 역순으로 만든다고 해도 속도가 느려지지는 않습니다.
▶▶ 자바스크립트] 문자열 배열, 가나다 순 정렬/내림차순 소팅; Sort String Array, JavaScript
tag: html
HTML | CSS | 자바스크립트 JavaScript
<< Home