我正在尝试使用indexOf()
检查子字符串。当测试的字符串存在时,它应该返回true,否则返回false。出于某种原因,我的代码总是返回true?
为什么这段代码不起作用,怎么修复?
function checkSpam(str) {
if(str == str.indexOf('yyy') || str.indexOf('xxx')) {
return true;
}
return false;
}
答案 0 :(得分:0)
Javascript的indexOf()返回一个数字,而不是字符串,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
你应该是:
if(-1 != str.indexOf('yyy') || -1 != str.indexOf('xxx')) {
return true;
}
答案 1 :(得分:0)
它并不总是true
。
您的条件由两部分组成。除非str == str.indexOf('yyy')
的值为str
,否则第一部分"-1"
将始终为false。第二部分str.indexOf('xxx')
将始终评估为true,除非字符串以xxx
开头,因为indexOf
调用的结果将为零。
因此,如果str
为"-1"
或者不是xxx
,则结果为true
。
如果您想检查字符串是否包含xxx
或yyy
,您应该在条件的两个部分检查indexOf
的结果:
if (str.indexOf('yyy') != -1 || str.indexOf('xxx') != -1) {