function containsPunctuation(word)
{
var punctuation = [";", "!", ".", "?", ",", "-"];
for(var i = 0; i < punctuation.length; i++)
{
if(word.indexOf(punctuation[i]) !== -1)
{
return true;
}
}
return false;
}
function isStopWord(word, stopWords)
{
for (var i = 0; i < stopWords.length; i += 1)
{
var stopWord = stopWords[i];
if ((containsPunctuation(word)) && (word.indexOf(stopWord) === 0) && (word.length === stopWord.length + 1))
{
return true;
}
else if (word === stopWord)
{
return true;
}
}
return false;
}
在blockquote,containsPunctuation(word) && (word.indexOf(stopWord) === 0
怎么样?有人可以解释为什么它们都等于零吗?
我也不确定为什么会使用(word.length === stopWord.length + 1)
。
答案 0 :(得分:3)
我认为你正在阅读if语句有点不正确。不知道isStopWord函数应该做什么我不能告诉你(word.length === stopWord.length + 1)
部分是什么。
我可以告诉你(containsPunctuation(word))
是它自己的布尔值,因为该函数返回true
或false
。那部分是它自己的评价。
第二部分(word.indexOf(stopWord) === 0)
也是一个完整的评估。该部分与containsPunctuation函数无关。 indexOf
函数返回一个整数,因此它可以等于0.
第三部分(word.length === stopWord.length + 1)
正在检查word
的长度是否超过stopWord
的长度。
它们都是单独的评估,因为您正在使用&amp;&amp;在它们之间,它们都必须评估为true
,以便运行它后面的代码块。
以下是字符串和数组的indexOf
文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
- EDIT--
根据你的评论,我对(word.length === stopWord.length + 1)
的猜测是因为该单词可能包含一个未包含在stopWord
中的标点符号,所以如果标点符号结束时检查只会返回true因为indexOf检查只有在停用词开始于单词的开头时才会返回0。