在JavaScript中检查字符串之间是否相等的正确方法是什么?
在JavaScript中检查字符串相等性的正确方法是什么?
最简单的方法是使用三元运算符,如下所示:
"was" = "was" ? true : false
但是,如果要比较的字符串在数组中,则将使用es6过滤器
let stringArray = [men, boys, girls, sit, can, gotten]
stringArray.filter(I=> I === boys ?
stringArray.pop(indexOf(I)) : null)
上面将检查您的stringArray以及从数组中匹配它的任何字符串,在本例中,我们选择了“ boys”
考虑到这两个字符串可能是非常大的,有2种主要的方法bitwise search
和localeCompare
我推荐这个功能
function compareLargeStrings(a,b){
if (a.length !== b.length) {
return false;
}
return a.localeCompare(b) === 0;
}
Objects
可以使用JSON.stringyfy()
技巧检查字符串。
var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);
仅添加一个答案:如果所有这些方法都返回false,即使字符串看起来相等,一个字符串的左侧和/或右侧也可能存在空格。因此,.trim()
在比较之前,只需将a 放在字符串的末尾:
if(s1.trim() === s2.trim())
{
// your code
}
I have lost hours trying to figure out what is wrong. Hope this will help to someone!
除非您真的知道强制的工作方式,否则应避免==
使用身份运算符===
。但是您应该阅读此书以了解其工作原理。
如果使用==
,则可以让语言为您执行某种类型的强制转换,例如:
"1" == 1 // true
"0" == false // true
[] == false // true
正如道格拉斯·克罗克福德(Douglas Crockford)在他的书中所说:
始终最好使用身份运算符。
如果您知道它们是字符串,则无需检查类型。
"a" == "b"
但是,请注意,字符串对象将不相等。
new String("a") == new String("a")
将返回false。
调用valueOf()方法将其转换为String对象的基元,
new String("a").valueOf() == new String("a").valueOf()
将返回true
我在测试过程中提出了一个替代解决方案。您可以在字符串原型上使用function。
在chrome浏览器中正常工作