在JavaScript中检查字符串是否相等的正确方法是什么?


当前回答

如果知道它们是字符串,则不需要检查类型。

"a" == "b"

但是,请注意字符串对象是不相等的。

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

将返回false。

调用valueOf()方法将其转换为String对象的原语,

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

将返回true

其他回答

考虑到这两个字符串可能都非常大,有两种主要的方法按位搜索和localeCompare

我推荐这个函数

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

严格的比较

要进行简单的比较,可以使用===来检查是否严格相等。正如其他人所说,这样做的优点是效率最高,并且可以减少出现错误或不确定代码的可能性。来源:MDN Web Docs:严格平等。

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) +“|”);

字符串对象可以使用JSON.stringify()技巧检查。

var me = new String(“me”); var u = new String(“me”); var isEquel = JSON.stringify(me) === JSON.stringify(you); console.log(isEquel);

如果知道它们是字符串,则不需要检查类型。

"a" == "b"

但是,请注意字符串对象是不相等的。

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

将返回false。

调用valueOf()方法将其转换为String对象的原语,

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

将返回true

你可以使用==或===,但最后一个更简单(src)

A == b(和它的否定!=)

A === b(和它的否定!==)