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에서 문자열을 만드는 방법은 두 가지가 있습니다.
var str = 'Javascript';
그러면 기본 문자열 값이 생성됩니다.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
'programing' 카테고리의 다른 글
컬렉션이 필요한 이유정렬은 Mergesort를 사용하지만 Arrays를 사용합니다.정렬은 안 되나요? (0) | 2023.01.15 |
---|---|
CASE 또는 IF ELESSIF를 사용하는 MySQL select 문을 선택하십시오.결과를 얻는 방법을 잘 모르겠습니다. (0) | 2023.01.15 |
번들러를 통해 mysql2 gem을 설치하는 중 오류 발생 (0) | 2023.01.15 |
enum.values()는 반환되는 enum의 순서입니다. (0) | 2023.01.15 |
워크로드가 IO에 묶여 있을 때 mariadb에서 대량의 데이터를 빠르게 가져오는 방법 (0) | 2023.01.15 |