关于fromCharCode并结束“ if”语句的问题

时间:2018-09-27 14:09:18

标签: algorithm fromcharcode

我正在研究一种简单的密码算法,并且试图弄清楚如何在字符数超过122时在字符122(z)处停止if语句并从char 97(a)开始。到目前为止,我所看到的都是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 :(得分:1)

使用modular arithmetic

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

给常量名称而不在代码中使用数字被认为是一种好习惯。这样的数字通常称为magic numbers,使阅读代码更加困难。