2016-07-31 3 views
-4

Я сделал это. Может ли кто-нибудь предложить, как я могу сделать это короче, не теряя его свойств? Пожалуйста, держите английский просто.Как я могу упростить этот JavaScript?

function LetterChanges(str) { 
    var se = ""; 
    for(var i = 0;i < str.length;i++){ 
     var ser = str.charAt(i); 
     if(ser == "A" || ser == "a"){ 
      if(ser == "A"){se += "B"} 
      else {se += "b"} 
     } 
     if(ser == "B" || ser == "b"){ 
      if(ser == "B"){se += "C"} 
      else {se += "c"} 
     } 
     if(ser == "C" || ser == "c"){ 
      if(ser == "C"){se += "D"} 
      else {se += "d"} 
     } 
     if(ser == "D" || ser == "d"){ 
      if(ser == "D"){se += "E"} 
      else {se += "e"} 
     } 
     if(ser == "E" || ser == "e"){ 
      if(ser == "E"){se += "F"} 
      else {se += "f"} 
     } 
     if(ser == "F" || ser == "f"){ 
      if(ser == "F"){se += "G"} 
      else {se += "g"} 
     } 
     if(ser == "G" || ser == "g"){ 
      if(ser == "G"){se += "H"} 
      else {se += "h"} 
     } 
     if(ser == "H" || ser == "h"){ 
      if(ser == "H"){se += "I"} 
      else {se += "i"} 
     } 
     if(ser == "I" || ser == "i"){ 
      if(ser == "I"){se += "J"} 
      else {se += "j"} 
     } 
     if(ser == "J" || ser == "j"){ 
      if(ser == "J"){se += "K"} 
      else {se += "k"} 
     } 
     if(ser == "K" || ser == "k"){ 
      if(ser == "K"){se += "L"} 
      else {se += "l"} 
     } 
     if(ser == "L" || ser == "l"){ 
      if(ser == "L"){se += "M"} 
      else {se += "m"} 
     } 
     if(ser == "M" || ser == "m"){ 
      if(ser == "M"){se += "N"} 
      else {se += "n"} 
     } 
     if(ser == "N" || ser == "n"){ 
      if(ser == "N"){se += "O"} 
      else {se += "o"} 
     } 
     if(ser == "O" || ser == "o"){ 
      if(ser == "O"){se += "P"} 
      else {se += "p"} 
     } 
     if(ser == "P" || ser == "p"){ 
      if(ser == "P"){se += "Q"} 
      else {se += "q"} 
     } 
     if(ser == "Q" || ser == "q"){ 
      if(ser == "Q"){se += "R"} 
      else {se += "r"} 
     } 
     if(ser == "R" || ser == "r"){ 
      if(ser == "R"){se += "S"} 
      else {se += "s"} 
     } 
     if(ser == "S" || ser == "s"){ 
      if(ser == "S"){se += "T"} 
      else {se += "t"} 
     } 
     if(ser == "T" || ser == "t"){ 
      if(ser == "T"){se += "U"} 
      else {se += "u"} 
     } 
     if(ser == "U" || ser == "u"){ 
      if(ser == "U"){se += "V"} 
      else {se += "v"} 
     } 
     if(ser == "V" || ser == "v"){ 
      if(ser == "V"){se += "W"} 
      else {se += "w"} 
     } 
     if(ser == "W" || ser == "w"){ 
      if(ser == "W"){se += "X"} 
      else {se += "x"} 
     } 
     if(ser == "X" || ser == "x"){ 
      if(ser == "X"){se += "Y"} 
      else {se += "y"} 
     } 
     if(ser == "Y" || ser == "y"){ 
      if(ser == "Y"){se += "Z"} 
      else {se += "z"} 
       if(ser == "Z" || ser == "z"){ 
      if(ser == "Z"){se += "A"} 
      else {se += "a"} 
     } 
    } 

    return se; 
    } 

    LetterChanges("Argument Goes Here"); 
+1

' "Ваша строка здесь" .Привернуть (/ [^ аз]/ги "") .Привернуть (/ [аз ]/gi, function (a) {return String.fromCharCode (a.charCodeAt (0) + 1)}) заменить (/ \ {/ g, "a") заменить (/ \ [/ g, "A") 'будет однострочным. Если ваш код _working_, то задайте конкретный вопрос в [CodeReview] (http://codereview.stackexchange.com/), а не здесь. Вместо текста наполнителя, _describe, что должна делать ваша функция! – Xufox

+1

Ответ на ваш вопрос: «Да». Однако это не служба написания кода. – Hulk

+0

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что это не похоже на программирование в пределах области, определенной в [справочном центре] (http://stackoverflow.com/help/on-topic). Подумайте о повторном запросе этого вопроса на http://codereview.stackexchange.com, но ** укажите желаемый результат программы **. – Matt

ответ

1

Если я правильно понимаю, вы хотите, чтобы просто вернуть исходную строку, в которой каждая буква была заменена следующей в алфавитном порядке, сохраняя тот же случай.

Так что это будет наивности сделать работу:

function letterChange(str) { 
 
    var alphabet = 
 
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
 
    'abcdefghijklmnopqrstuvwxyz', 
 
    result = ''; 
 
    for (var i = 0, n = str.length; i < n; i++) { 
 
    var pos = alphabet.indexOf(str.charAt(i)) + 1; 
 
    if (pos == 26 || pos == 52) { 
 
     pos -= 26; 
 
    } 
 
    result += alphabet[pos]; 
 
    } 
 
    return result; 
 
} 
 
var example = 'ABJKYZabjkyz'; 
 
console.log(example, '->', letterChange(example));

Смежные вопросы