javascript - 如何使数组中的元素改变它的位置
问题描述
我是JS的初学者。我试图理解 Caesar Cipher ROT13,但这对我来说太复杂了。所以我尝试编写自己的代码。下面是:
function encrip() {
var alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
var str = "Ni Hao";
var string = str.toUpperCase();
for (var i = 0; i < string.length; i++) {
for (var k = 0; k < alphabet.length; k++) {
if(string.charAt(i) == alphabet[k]) {
/* console.log(string.charAt(i) + ' ' + alphabet.indexOf(alphabet[k])); */
}
}
}
}
encrip();
但我被困住了。怎么做:
1.从 var str 中获取值,然后访问 var alphabet ,将每个字母从 var str 值更改为字母表中的下一个 3(var str 每个元素的当前位置将被更改) 例如:Input: Ni Hao ==> output: QL KDR
2.创建通用代码,我的意思是,不仅用于将位置更改为 3,而且当我给出值“5”时,每个元素将被字母表中的下 5 个位置更改。所以当我改变它的值时可以改变输出
我希望我清楚地解释了一切。提前感谢大家的帮助!!
解决方案
您可以使用以下函数对英文单词进行加密,第一个参数是要加密的字符串,第二个参数是移位
function encryp(str,pos){
var alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var strUC=str.toUpperCase();
var enc="";
for(var i=0;i<strUC.length;i++){
if(strUC.charAt(i)!=" "){
enc+=alpha.charAt((alpha.indexOf(strUC.charAt(i))+pos)%26)
}
else{
enc+=" "
}
// in your case pos=3
}
return enc;
}
console.log(encryp("NiHao",3));