我已经将自己编码为一个漏洞,虽然重新开始会更容易,但是这里仍然有教训可学(无论如何,这只是练习)。
我正在建立一个凯撒密码,它将接受两个参数:消息和密码密钥。将每个字母与密码密钥中的对应字母进行比较,然后将其更改为新的字符代码。
我真费劲地弄清楚如何将字符代码数组转换为字符数组(或者更好的是字符串)。
这是我的代码:
function cipher(message, cipherKey) {
//convert the message and cipher key to arrays of their character codes
var messageArr = message.toLowerCase().split("").map(x => x.charCodeAt() - 97);
var cipherKeyArr = cipherKey.toLowerCase().split("").map(x => x.charCodeAt() - 97);
//create new array for the ciphered array, which will turn back to a string
var cipheredArr = [];
//loop through both the cipher key value and message key value to
//create the ciphered array
for (var i = 0; i < messageArr.length; i++) {
cipheredArr[i] = messageArr[i] + cipherKeyArr[i];
if (cipheredArr[i] >= 26) {}
}
//go through the ciphered array and make it loop back through
//the alphabet once it goes past z
for (var i = 0; i < cipheredArr.length; i++) {
if (cipheredArr[i] >= 26) {cipheredArr[i] = cipheredArr[i] - 26;}
}
//display on webpage
return cipheredArr;
}
所以cipheredArr是一个数字数组(字符代码),但是我找不到一种很好的方法来迭代它并将其改回字母。为此,.fromCharCode()语法使我感到困惑。
答案 0 :(得分:0)
要获取字符代码数组的字符数组,请使用map
:
var chars = codes.map(code => String.fromCharCode(code));
(注意:仅codes.map(String.fromCharCode)
不起作用,String.fromCharCode
会不恰当地使用第二个和第三个参数map
传递回调。)
要从这些代码中获取 string :
// ES2015+
var str = String.fromCharCode(...codes);
// ES5 and earlier:
var str = String.fromCharCode.apply(null, codes);