在JavaScript中检查字符串是否相等的正确方法是什么?
当前回答
在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()
其他回答
考虑到这两个字符串可能都非常大,有两种主要的方法按位搜索和localeCompare
我推荐这个函数
function compareLargeStrings(a,b){
if (a.length !== b.length) {
return false;
}
return a.localeCompare(b) === 0;
}
字符串对象可以使用JSON.stringify()技巧检查。
var me = new String(“me”); var u = new String(“me”); var isEquel = JSON.stringify(me) === JSON.stringify(you); console.log(isEquel);
对于字符串,我们有一个支持的方法localCompare,它在字符串比较中非常方便。在我看来,我们应该使用它,不需要把事情复杂化。
用法:
const a = 'Hello'
const b = 'Hell'
a.localCompare(a) // 0
a.localCompare(b) // 1
b.localCompare(a) // -1
你可以使用==或===,但最后一个更简单(src)
A == b(和它的否定!=)
A === b(和它的否定!==)
只是对答案做了一个补充:如果所有这些方法都返回false,即使字符串看起来是相等的,也有可能在一个字符串的左右有一个空白。因此,在比较之前,只需在字符串的末尾加上.trim():
if(s1.trim() === s2.trim())
{
// your code
}
我花了好几个小时想弄清楚是怎么回事。 希望这对一些人有所帮助!