programing

JavaScript에서 문자열의 동일성을 확인하는 올바른 방법은 무엇입니까?

yoursource 2023. 1. 15. 13:11
반응형

JavaScript에서 문자열의 동일성을 확인하는 올바른 방법은 무엇입니까?

JavaScript에서 문자열 간의 동일성을 확인하는 올바른 방법은 무엇입니까?

항상이 명령어를 사용하는 경우의 차이와 의미를 완전히 이해할 수 없습니다.== ★★★★★★★★★★★★★★★★★」=== " " " 를 사용합니다.===불분명한(불명확한) 버그나 WTF로부터 보호할 수 있기 때문입니다.' '정규'== 내부 매우 치 않은 결과가 이 있습니다., 「형식」을 하면, 「형」을 사용할 수 있습니다.따라서===이치노

이를 비롯해 Javascript의 다른 "좋은 부분과 나쁜 부분"에 대한 통찰력을 얻기 위해 더글라스 크록포드 씨와 그의 작품에 대해 읽어보았습니다.Google Tech Talk에서 그는 많은 유용한 정보를 요약하고 있습니다.http://www.youtube.com/watch?v=hQVTIJBZook


업데이트:

Kyle Simpson의 You Don't Know JS 시리즈는 훌륭하다.이 시리즈는 일반적으로 오해받는 언어의 영역으로 들어가 크로크포드가 피하라고 제안하는 "나쁜 부분"에 대해 설명합니다.그것들을 이해함으로써 당신은 그것들을 적절히 사용할 수 있고 함정을 피할 수 있다.

「Up & Going(업&고잉)」에는, 「Equality(평등)」의 섹션이 포함되어 있습니다.이 섹션에는, 루즈(loose)를 사용할 때의 구체적인 개요가 기재되어 있습니다.== ) strict ( ) 。=== ) 。

많은 세부사항을 간단한 테이크로 요약하고 사용 여부를 알 수 있도록 도와줍니다.== ★★★★★★★★★★★★★★★★★」===다양한 상황에서, 저의 간단한 규칙은 다음과 같습니다.

  • 의 값( 「side」)이는, 「Aka side」가 됩니다.true ★★★★★★★★★★★★★★★★★」false, 회피==를 사용합니다.===.
  • 의 어느 값 「」 「」 「」 「」)이 될 수 ).0,"" , 「」[]빈 -- -- --), --회 -- -- 、 。==를 사용합니다.===.
  • 기타 모든 경우 사용해도 안전합니다.==안전할 뿐만 아니라 많은 경우 코드를 쉽게 읽을 수 있습니다.

Javascript를 제대로 이해하기 위해 시간을 투자하고 싶지 않은 개발자들에게는 Crokford의 강연을 추천합니다.Javascript에서 가끔 작업하는 개발자들에게는 좋은 조언입니다.

문자열임을 알면 유형을 확인할 필요가 없습니다.

"a" == "b"

단, 문자열 객체는 동일하지 않습니다.

new String("a") == new String("a")

false가 반환됩니다.

valueOf() 메서드를 호출하여 String 객체의 프리미티브로 변환합니다.

new String("a").valueOf() == new String("a").valueOf()

진실된 모습으로 돌아오다

답변에 한 가지 추가: 모든 메서드가 false를 반환하는 경우 문자열이 같아도 하나의 문자열의 왼쪽과 오른쪽에 공백이 있을 수 있습니다.그러니까 그냥....trim()비교하기 전에 문자열의 끝에 다음 항목을 입력합니다.

if(s1.trim() === s2.trim())
{
    // your code
}

뭐가 문제인지 알아내느라 몇 시간이나 허비했어요.이것이 누군가에게 도움이 되기를 바랍니다!

사용할 수 있습니다.==또는===그러나 마지막은 보다 심플한 방법으로 동작합니다(src).

a == b (및 그 부정!=)

여기에 이미지 설명 입력

a === b (및 그 부정!==)

여기에 이미지 설명 입력

이 질문을 하게 된 것은padding그리고.white-spaces

내 사건을 조사하다

 if (title === "LastName")
      doSomething();

그리고 제목은" LastName"

여기에 이미지 설명 입력

그래서 아마 당신은 이 두 가지를trim이렇게 기능하다

var title = $(this).text().trim();

javascript에서 문자열을 만드는 방법은 두 가지가 있습니다.

  1. var str = 'Javascript';그러면 기본 문자열 값이 생성됩니다.

  2. var obj = new String('Javascript');그러면 유형의 래퍼 개체가 생성됩니다.String.

    typeof str // string
    typeof obj // object

따라서 동등성을 확인하는 가장 좋은 방법은 다음을 사용하는 것입니다.===연산자는 양쪽 오퍼랜드의 유형과 값을 체크하기 때문입니다.

두 개체 간의 동일성을 확인하려면String.prototype.valueOf올바른 방법입니다.

new String('javascript').valueOf() == new String('javascript').valueOf()

스트링Objects를 사용하여 확인할 수 있습니다.JSON.stringify()속임수.

var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);

엄밀한 비교

단순 비교를 수행하려면 을 사용하여 엄밀한 동일성을 확인합니다.다른 사람들이 말했듯이, 이것은 가장 효율적이며 버그가 있거나 불확실한 코드가 발생할 가능성을 줄일 수 있다는 장점이 있습니다.출처 : MDN Web Docs : Strict Equality.

var a = "hello1";
var b = "hello2";
console.log("a === a?" + (a === a) + "|");
console.log("a === b?" + (a === b) + "|");

알파벳 비교

두 문자열을 비교하여 문자열이 다른 문자열의 앞 또는 뒤에 있는지 확인하려면 자연 정렬을 기준으로<,>,<=,그리고.>=오퍼레이터.출처 : , , 및 의 MDN WebDocs.

    var a = "hello1";
    var b = "hello2";
    console.log("a < a?" + (a < a) + "|");
    console.log("a < b?" + (a < b) + "|");
    console.log("a > b?" + (a > b) + "|");
    console.log("b > a?" + (b > a) + "|");

두 문자열이 모두 매우 클 수 있다는 점을 고려할 때 두 가지 주요 접근법이 있습니다.bitwise search그리고.localeCompare

나는 이 기능을 재인식했다.

function compareLargeStrings(a,b){
    if (a.length !== b.length) {
         return false;
    }
    return a.localeCompare(b) === 0;
}

또, 이하도 고려해 주세요.["foo", "bar"] == "foo,bar".

문자열에는 지원되는 메서드가 있습니다.localCompare스트링 비교에 매우 편리합니다.IMO, 우리는 그것을 사용해야만 하고 복잡한 것은 필요하지 않습니다.

사용방법:

const a = 'Hello'
const b = 'Hell'

a.localCompare(a) // 0
a.localCompare(b) // 1
b.localCompare(a) // -1

언급URL : https://stackoverflow.com/questions/3586775/what-is-the-correct-way-to-check-for-string-equality-in-javascript

반응형