遍历数组并将所有字符代码转换为字符?

时间:2018-10-04 17:43:08

标签: javascript loops character-encoding

我已经将自己编码为一个漏洞,虽然重新开始会更容易,但是这里仍然有教训可学(无论如何,这只是练习)。

我正在建立一个凯撒密码,它将接受两个参数:消息和密码密钥。将每个字母与密码密钥中的对应字母进行比较,然后将其更改为新的字符代码。

我真费劲地弄清楚如何将字符代码数组转换为字符数组(或者更好的是字符串)。

这是我的代码:

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()语法使我感到困惑。

1 个答案:

答案 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);

fromCharCode返回一个字符串,该字符串由您将其作为离散参数传递的代码单元组成(MDN | spec)。