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;
}


在块引用中,containsPunctuation(word) && (word.indexOf(stopWord) === 0怎么样?有人可以解释为什么它们都等于零吗?

我也不确定为什么要使用(word.length === stopWord.length + 1)

最佳答案

我认为您正在错误地读取if语句。不知道isStopWord函数应该做什么,我无法告诉您(word.length === stopWord.length + 1)部分的全部含义。

我可以告诉你(containsPunctuation(word))是它自己的布尔值,因为该函数返回truefalse。这部分是它自己的评估。

第二部分(word.indexOf(stopWord) === 0)也是完整的评估。该部分与containsPunctuation函数无关。 indexOf函数返回一个整数,因此它可以等于0。

第三部分(word.length === stopWord.length + 1)正在检查word的长度是否比stopWord的长度大一。

它们都是单独的评估,并且因为您在所有评估之间都使用&&,所以它们都必须评估为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

- 编辑 -
根据您的评论,我对(word.length === stopWord.length + 1)的猜测是因为该单词可能包含stopWord中不包含的标点符号,因此,如果check仅在标点符号在单词末尾时才返回true,因为如果停用词从单词的开头开始,indexOf检查将仅返回0。

关于javascript - 有人可以向我解释一个函数如何等于0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41816768/

10-12 15:46