Вопрос о fromCharCode и окончании оператора if - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю над простым алгоритмом шифрования и пытаюсь выяснить, как остановить оператор if на символе 122 (z) и начать обратно с символа 97 (a), как только число символов превысит 122. Эточто я до сих пор изучал в школах MDN и W3 и ничего не придумал.

enter code here
function simpleCipher(str) {

   var newString = [];

  for (var i = 0; i < str.length; i ++) {
     if (str.charCodeAt(i) > 97 || str.charCodeAt(i) < 122) {
       var convertString = String.fromCharCode(str.charCodeAt(i) + 4);
       var powerString = newString.push(convertString);
    } else {
      return;
    }
  } 
  return newString.join('');
}

1 Ответ

0 голосов
/ 27 сентября 2018

Использовать модульную арифметику .

var aPos = 97;
var zPos = 122;
var charsCount = zPos - aPos + 1;
...
if (aPos <= str.charCodeAt(i) && str.charCodeAt(i) <= zPos) { // probably you want && here
  var charNumber = str.charCodeAt(i) - aPos;
  var charNumberEncoded = (charNumber + 4) % charsCount;
  var convertString = String.fromCharCode(aPos + charNumberEncoded);
  var powerString = newString.push(convertString);
}

Рекомендуется давать имена констант и не использовать числа в коде.Такие числа часто упоминаются как магические числа и затрудняют чтение кода.

...