mystring = "playlist/323";
if(mystring.indexOf('playlist/') == 1) {
alert("We got it");
} else {
alert("We don't");
}
我希望它会显示“我们知道了”,但事实并非如此。
mystring = "playlist/323";
if(mystring.indexOf('playlist/') == 1) {
alert("We got it");
} else {
alert("We don't");
}
我希望它会显示“我们知道了”,但事实并非如此。
javascript 中的索引从零开始,您的 if 语句应如下所示:
if(mystring.indexOf('playlist/') == 0)
在您的情况下,索引/
不应返回 1。如果它不存在于您的字符串中,indexOf
将返回-1
.
if(mystring.indexOf('playlist/') > -1) {
alert("We got it");
} else {
alert("We don't");
}
因为字符串中的第一个字符位于索引 0,而不是 1。
解决方案是:
if(mystring.indexOf('playlist/') === 0)
(使用严格的相等运算符,这是一种很好的做法,因为它同时测试类型和值,而不仅仅是值)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
我认为您解释indexOf的方式存在一些误解。
alert(mystring.indexOf('/')); //gives you 8
alert(mystring.indexOf('l')); //gives you 1
alert(mystring.indexOf('playlist/')); //gives you 0
if(mystring.indexOf('playlist/') == 0){ //correct way
alert("we got it");
}
indexOf 将不等于 1,因为字符串“playlist/”的索引实际上是 0,它从 0 开始,如果你得到除 -1 以外的任何东西,你就有匹配