[JavaScript] 문자열 비교의 원리 - 유니코드 #32
yunseorim1116
started this conversation in
Ideas
Replies: 2 comments 7 replies
-
|
좋은글 감사해영. 컴퓨터가 문자를 표현하는 방법에대해서 아는것은 정말 중요하죠. |
Beta Was this translation helpful? Give feedback.
3 replies
-
JavaScript sort() 함수의 숨겨진 비밀 - 문자열 비교 함정
1. sort() 함수의 기본 동작const fruits = ['banana', 'apple', 'orange'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'orange']이건 예상대로 동작하네요! 하지만... 2. 함정 발견! 숫자 정렬의 비극const numbers = [1, 5, 10, 2, 30];
numbers.sort();
console.log(numbers); // [1, 10, 2, 30, 5] 😱어라? 뭔가 이상하죠? 이게 바로 왜 이런 일이 발생할까요?개발자한테 가장 중요한건 "왜" 겠죠.
문자열 비교에서는:
3. 해결 방법3.1 숫자 정렬을 위한 비교 함수const numbers = [1, 5, 10, 2, 30];
// 오름차순 정렬
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 5, 10, 30]
// 내림차순 정렬
numbers.sort((a, b) => b - a);
console.log(numbers); // [30, 10, 5, 2, 1] |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
[JavaScript] 문자열 비교의 숨은 원리 - 유니코드를 알면 쉽다!
JavaScript에서 문자열 비교가 어떻게 이루어지는지, 특히 숫자 문자열의 비교가 어떻게 동작하는지 알아보겠습니다.
유니코드란 무엇인가?
컴퓨터는 모든 문자를 숫자로 저장합니다. 이때 사용되는 것이 '유니코드'입니다. 숫자 문자(0-9)의 유니코드 값을 보면 다음과 같습니다:
문자열 비교는 어떻게 동작할까?
JavaScript에서 다음과 같은 코드를 보신 적 있나요?
이 코드가 동작하는 원리를 살펴봅시다.
예시 1: input이 "5"일 때
javascriptCopy"5" >= "0" && "5" <= "9"유니코드 값으로는
53 >= 48 && 53 <= 57 // true예시 2: input이 "a"일 때
javascriptCopy"a" >= "0" && "a" <= "9"'유니코드 값으로는
97 >= 48 && 97 <= 57 // false여기서 중요한 점! 두 자리 이상의 숫자는 예상과 다르게 동작할 수 있습니다.
"12" >= "0" && "12" <= "9" // false=> 왜냐구요?
"12"의 첫 번째 문자인 "1"만 비교하기 때문입니다. ("1"의 유니코드 값 = 49)
실제 숫자 비교가 필요하다면?
실제 숫자 값으로 비교하고 싶다면 Number()를 사용하세요:
정리
문자열 비교는 유니코드 값으로 이루어집니다.
숫자 문자("0""9")는 4857의 유니코드 값을 가집니다.
문자열 비교는 한 글자씩 이루어집니다.
두 자리 이상의 숫자는 Number()로 변환해서 비교하세요.
실제 활용 예시
이 글의 예제들은 모두 실제 JavaScript 환경에서 테스트되었습니다.
Beta Was this translation helpful? Give feedback.
All reactions