首页 > 解决方案 > 如何使数组中的元素改变它的位置

问题描述

我是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 个位置更改。所以当我改变它的值时可以改变输出

我希望我清楚地解释了一切。提前感谢大家的帮助!!

标签: javascriptarrayscaesar-cipher

解决方案


您可以使用以下函数对英文单词进行加密,第一个参数是要加密的字符串,第二个参数是移位

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


推荐阅读