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


当前回答

还要考虑["foo", "bar"] == "foo,bar"。

其他回答

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

"a" == "b"

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

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

将返回false。

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

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

将返回true

只是对答案做了一个补充:如果所有这些方法都返回false,即使字符串看起来是相等的,也有可能在一个字符串的左右有一个空白。因此,在比较之前,只需在字符串的末尾加上.trim():

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

我花了好几个小时想弄清楚是怎么回事。 希望这对一些人有所帮助!

在javascript中实际上有两种方法可以创建字符串。

var str = 'Javascript';这将创建一个基本字符串值。 var obj = new String('Javascript');这将创建一个包装器对象 String类型。 Typeof STR //字符串 Typeof obj //对象

因此,检查是否相等的最好方法是使用===操作符,因为它检查两个操作数的值和类型。

如果你想检查两个对象是否相等,那么使用String.prototype.valueOf是正确的方法。

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

还要考虑["foo", "bar"] == "foo,bar"。

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

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