我是编码和学习indexOf()方法的新手,我找到了这样的代码部分(见下文) 我想知道为什么我们在下面的代码中使用 if()部分。没有它,为什么它不起作用?
var myString = 'Welcome to Wrox books. ';
myString = myString + 'The Wrox website is www.wrox.com. ';
myString = myString + 'Visit the Wrox website today. Thanks for buying Wrox';
var foundAtPosition = 0;
var wroxCount = 0;
while (foundAtPosition != -1)
{
foundAtPosition = myString.indexOf('Wrox',foundAtPosition);
if (foundAtPosition != -1)
{
wroxCount++;
foundAtPosition++;
}
}
document.write('There are ' + wroxCount + ' occurrences of the word Wrox');
会感激任何想法。
答案 0 :(得分:2)
您需要if来检查您是否找到了您要查找的字符串。 如果找不到字符串,indexOf()将返回-1
答案 1 :(得分:0)
每次找到它时,你都在计算wrox
的位置。如果您没有更多的资源,则不会增加计数器wroxCount
,因为我们不希望计数器在foundAtPosition
变为-1
后计数。或换句话说,在最后一次发生之后,或者根本找不到wrox
。
答案 2 :(得分:0)
indexOf()
方法接受两个参数:要在给定字符串中查找的子字符串,以及应该开始搜索子字符串的位置(索引)。它返回第一次出现的子串的位置(索引)(如果提供了第二个参数,它将是提供的位置之后的第一个参数)。
那么,循环中的代码是什么:
indexOf()
方法查找第一次出现的子字符串的位置,并将位置保存在变量foundAtPosition
中。foundAtPosition!=-1
),则wroxCount
变量会递增以指示到目前为止找到的子字符串数,并且foundAtPosition
变量也会递增(读取时)关于它)。while
循环检查条件,如果满足则再次执行其内容。foundAtPosition
处搜索。当foundAtPosition
变量加1时,它将在先前发现的事件之后开始搜索,并将返回下一个变量的位置。wroxCount
变量包含主字符串中子字符串出现次数。结果:您获得了您要查找的单词(子字符串)出现在字符串myString
中的次数。