Строковый аргумент Javascript не определен, не может получить доступ к свойству .length - PullRequest
0 голосов
/ 28 апреля 2018

Так что я работаю над вызовом freecodecamp, где мне нужно расшифровать ceasar-шифры. Я сделал вторичную функцию, которая вызывается из основной функции для декодирования каждого слова в строке. У меня проблемы с этим вторичным кодом, потому что он продолжает выдавать ошибку, что строковый аргумент, заданный в качестве параметра, не определен, и что я не могу получить доступ к длине. Может кто-нибудь объяснить, что происходит?

Отказ от ответственности: я новичок в кодировании и провел последние 30 минут в поисках ответа на эту проблему, но я не могу его найти. Я чувствую, что это исправление должно быть легким и простым и заранее извиниться, если кто-то сочтет этот вопрос излишним.

Вот код:

function rot13(str) { // LBH QVQ VG!
  var stringArray = [];
  stringArray = str.split(" ");
  var value = stringArray.length;
  var decodedWords = [];
  var iCount = 0;

  while(iCount < value){
    decodedWords.push(decodeWord(stringArray[i]));
    iCount++;
  }

  return decodeWord("Confused!");

}

function decodeWord(word) {

    var decodedWord = "";

    for (i = 0; i < word.length; i++){

      var cipherVal = word.charCodeAt(i);
      var decodedVal = cipherVal;

      if( cipherVal >= 97 && cipherVal <= 109 || cipherVal >= 65 && cipherVal <= 77){
        decodedVal = cipherVal + 13;
      }

      else if(cipherVal >= 110 && cipherVal <= 122 || cipherVal >= 78 && 
 cipherVal <= 90){
        decodedVal = cipherVal - 13;
      }

      decodedWord += String.fromCharCode(decodedVal);
    }
    return decodedWord;
  }

Спасибо за любой совет! Очень ценится.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Насколько я понимаю, вы допустили ошибку в этом decodedWords.push(decodeWord(stringArray[i]));

изменить на

decodedWords.push(decodeWord(stringArray[iCount]));

Надеюсь, это работает. Дайте мне знать по любым вопросам

0 голосов
/ 28 апреля 2018

В вашей первой функции i внутри цикла должно быть iCount:

var iCount = 0;
while(iCount < value) {
    decodedWords.push(decodeWord(stringArray[iCount]));
    iCount++;
}

Функция decodeWord жаловалась на то, что word не определено, поскольку вы передавали его элемент stringArray по индексу, который был неопределен (i). Если вы захватите элемент по определенному индексу (iCount), decodeWord получит определенный word и сможет захватить его длину.

Конечно, вы, вероятно, также захотите, чтобы rot13 возвращала закодированную версию входной строки, а не закодированную версию "Confused!":

return decodedWords.join(" ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...