我尝试在 JavaScript 中构建 ROT 13 密码,我做到了,但输出未显示在控制台中,请检查其中有什么问题

问题描述

一种常见的现代用途是 ROT13 密码,其中字母的值移动了 13 位。因此,'A' ↔ 'N'、'B' ↔ 'O',依此类推。

function rot13(str) {
    let newStr="";
  let upperAlph=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"]
  let rotAlph=["N","U","V","Z","A","M"];
  for(let i=0; i<str.length; i++){
 
    let letter=str[i];
    let letTest=/[A-Z]/g;
    if(letTest.test(letter)){
      let indexOfLetter=upperAlph.indexOf(letter);
      let newLetter=rotAlph[indexOfLetter];
      newStr+newLetter;
    }
    else{
      newStr+letter;
    }
  }
  return newStr;
}

console.log(rot13("SERR PBQR PNZC"));

解决方法

修正了你的代码,我相信看看第 12 和 15 行:

function rot13(str) {
    let newStr="";
  let upperAlph=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"]
  let rotAlph=["N","U","V","Z","A","M"];
  for(let i=0; i<str.length; i++){
 
    let letter=str[i];
    let letTest=/[A-Z]/g;
    if(letTest.test(letter)){
      let indexOfLetter=upperAlph.indexOf(letter);
      let newLetter=rotAlph[indexOfLetter];
      newStr += newLetter;
    }
    else{
      newStr += letter;
    }
  }
  return newStr;
}

console.log(rot13("SERR PBQR PNZC"));

我也会使用映射类型对象而不是 2 个数组:

alphMap = {A: 'N',B: 'O',C: 'P',...,Z: 'M'};

您可以像这样找到替代字母:

let newLetter = alphMap[letter];

无需匹配索引。