2017-01-23 70 views
0
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嗎?

+1

什麼是輸入值? – Sparrow

+0

這是給出的(「森林甘瓜,亞軍」,[「the」]) –

回答

3

我想你正在閱讀的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中未包含的標點符號,所以如果檢查將只在標點位於單詞的末尾時才返回true,因爲如果停用詞從頭開始,indexOf檢查將僅返回0的詞。

+0

這些指導原則: 首先編寫一個函數containsPunctuation(單詞),它包含一個單詞並返回true,如果單詞包含標點符號。隨意使用我們在下面給出的標點符號。 其次,寫一個函數isStopWord(word,stopWords),它接受一個單詞,如果它是一個停用詞,則返回true。該檢查將根據單詞是否包含標點符號而有所不同。使用Array.prototype.indexOf在任何情況下都不起作用。 –

+0

我爲你添加了一個編輯 – SeanKelleyx

+0

謝謝肖恩。所以'(word.indexOf(stopWord)=== 0)'基本上是問'stopWord'是否在'word'的位置0? –

相關問題