반응형
JavaScript에서 문자열을 비교하는 최적의 방법?
JavaScript에서 문자열을 바이너리 검색하는 함수를 최적화하려고 합니다.
바이너리 검색에서는 키가 다음 중 어느 쪽인지 알아야 합니다.==
피벗 또는<
피벗
단, 이 경우 자바스크립트에서와 달리2개의 스트링을 비교해야 합니다.C
를 가진 언어를 좋아하다strcmp()
3개의 값을 반환하는 함수(-1, 0, +1)
(보다 작음, 같음, 보다 큼)에 대해서.
자바스크립트에는 바이너리 검색의 반복마다 하나의 비교가 필요할 정도로 3진수 값을 반환할 수 있는 네이티브 함수가 있나요?
를 사용할 수 있습니다.localeCompare()
방법.
string_a.localeCompare(string_b);
/* Expected Returns:
0: exact match
-1: string_a < string_b
1: string_a > string_b
*/
상세 정보:
- MDN: String.protype.locale Compare
- 스택 오버플로 - JavaScript strcmp()가 있습니까?
- 튜토리얼 포인트: JavaScript 문자열 - local Compare() 메서드
JavaScript에서는 두 문자열에서 정수와 같은 값을 확인할 수 있으므로 다음과 같이 할 수 있습니다.
"A" < "B"
"A" == "B"
"A" > "B"
따라서 스트링을 체크하는 함수를 직접 만들 수 있습니다.strcmp()
.
이 함수는 다음과 같습니다.
function strcmp(a, b)
{
return (a<b?-1:(a>b?1:0));
}
비교 연산자를 사용하여 문자열을 비교할 수 있습니다.astrcmp
함수는 다음과 같이 정의할 수 있습니다.
function strcmp(a, b) {
if (a.toString() < b.toString()) return -1;
if (a.toString() > b.toString()) return 1;
return 0;
}
편집 여기에서는 최대 {length(a), length(b)}의 비교를 통해 두 문자열이 서로 어떻게 관련되어 있는지 알 수 있습니다.
function strcmp(a, b) {
a = a.toString(), b = b.toString();
for (var i=0,n=Math.max(a.length, b.length); i<n && a.charAt(i) === b.charAt(i); ++i);
if (i === n) return 0;
return a.charAt(i) > b.charAt(i) ? -1 : 1;
}
언급URL : https://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript
반응형
'source' 카테고리의 다른 글
일부 스크립트에서 닫는 PHP 태그 '?>가 생략되는 이유는 무엇입니까? (0) | 2022.10.03 |
---|---|
Java에서는 @Override와 같은 주석이 내부적으로 어떻게 작동합니까? (0) | 2022.10.03 |
osx 마리아DB max_allowed_packet 설정 방법 (0) | 2022.10.03 |
정규식을 사용하여 소수인지 확인하는 방법 (0) | 2022.10.03 |
JMeter JDBC 수동 커밋 (0) | 2022.10.03 |