Programing

JavaScript에서 문자열을 비교하는 가장 좋은 방법은 무엇입니까?

lottogame 2020. 2. 27. 22:06
반응형

JavaScript에서 문자열을 비교하는 가장 좋은 방법은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

JavaScript에서 문자열의 이진 검색을 수행하는 함수를 최적화하려고합니다.

이진 검색을하려면 키가 ==피벗인지 피벗 인지 알아야합니다 <.

그러나 이것은 (보다 작거나 같고 큰) 세 개의 값 반환 C하는 strcmp()함수 가있는 언어 와 달리 JavaScript에서 두 개의 문자열 비교가 필요합니다 (-1, 0, +1).

JavaScript에는 이러한 이진 검색의 각 반복에 단 하나의 비교 만 필요하도록 삼항 값을 반환 할 수있는 원시 함수가 있습니까?


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));  
}

당신은 할 수 문자열을 비교하는 비교 연산자를 사용합니다 . strcmp기능은 다음과 같이 정의 할 수 있습니다 :

function strcmp(a, b) {
    if (a.toString() < b.toString()) return -1;
    if (a.toString() > b.toString()) return 1;
    return 0;
}

편집 두 문자열이 서로 관련되는 방식을 알려주기 위해     최대 min {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



반응형