source

JavaScript에서 문자열을 비교하는 최적의 방법?

factcode 2022. 10. 3. 17:23
반응형

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

 */

상세 정보:

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

반응형