Шифр цезаря на js

Пытаюсь написать Шифр Цезаря, но не понимаю как искать символы моего сообщения

Выводит undefined из количества символов в сообщении

var ru = ['А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я']
var eng = ['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']

shift = prompt("Выберите сдвиг")
var msg = prompt("Сообщение для зашифровки")
var total = 'Результат :'
lang = prompt("Enter the lang Eng/RU")
if(lang == 'RU'){
    for(i in ru){
        place = ru.indexOf(i)
        new_place = place + shift
        if(i in ru){
            total += ru[new_place]
        }
        else{
            total += 1;
        }
    }
}
else if(lang == 'ENG'){
    for(i in msg){
        place = eng.indexOf(i)
        new_place = place + shift
        if(i in eng){
            total += eng[new_place]
        }
        else{
            total += 1
        }
    }
}
alert(total)  


Ответы (1 шт):

Автор решения: Andrey Semykin

Там ошибок просто немеряно. Переменные надо объявлять, типы приводить и т.д. Сделал рабочий вариант для английского.

var ru = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я']
var eng = ['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', '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']

let shift = +prompt("Выберите сдвиг");
let msg = prompt("Сообщение для зашифровки");
console.log(msg);
let total = 'Результат :'
let lang = 'ENG' /*prompt("Enter the lang Eng/RU")
if (lang == 'RU') {
  for (let i of msg) {
    let place = ru.indexOf(i);
    console.log(i, 'place=', place);
    let new_place = place + shift;
    console.log(new_place);
    if (i in ru) {
      total += ru[new_place]
    } else {
      total += 1;
    }
  }
} else */if (lang == 'ENG') {
  for (let i of msg) {
    let place = eng.indexOf(i);
    console.log(i, 'place=', place);
    let new_place = place + shift;
    console.log(new_place);
    if (eng.includes(i)) {
      total += eng[new_place]
    } else {
      total += 1
    }
  }
}
alert(total)

→ Ссылка