2017-01-23 4 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; 
} 

В блоке, как containsPunctuation(word) && (word.indexOf(stopWord) === 0? Может ли кто-нибудь объяснить, почему они равны нулю?Может кто-нибудь объяснить мне, как функция может равняться 0?

Я также не знаю, почему используется (word.length === stopWord.length + 1).

+1

Каковы входные значения? – Sparrow

+0

Это было дано («лесной тупик, бегун», [«the»]) –

ответ

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.

Они все отдельные оценки и потому, что вы используете & & между ними все, все они должны оценивать, как 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, если секундомер начинается с начала слова.

+0

Это рекомендации: Сначала напишите функцию containsPunctuation (word), которая принимает одно слово и возвращает true, если слово содержит знак препинания , Не стесняйтесь использовать прецизионный массив, который мы вам указали ниже. Во-вторых, напишите функцию isStopWord (word, stopWords), которая принимает одно слово и возвращает true, если это слово-стоп. Проверка будет отличаться в зависимости от того, содержит ли слово препинание или нет. Использование Array.prototype.indexOf не будет работать во всех случаях. –

+0

Я добавил вам править – SeanKelleyx

+0

Спасибо, Шон. Итак '(word.indexOf (stopWord) === 0)' в основном спрашивает, находится ли 'stopWord' в позиции 0 в' word'? –

Смежные вопросы