Моя цель - продвигать каждую букву на три, например, «a» становится «d», «z» становится «c» и т. Д. И игнорировать символы, которые не являются буквами.У меня проблемы с пониманием цикла for и операторов if / else if / else, которые следуют относительно моей переменной char.Я также не понимаю, почему я получаю lc.indexOf(char) = -1
, как будто его нет даже в моем массиве.
Вот что-то вроде графика времени относительно того, что я пробовал:
Я преобразовал строкик массивам, потому что JS не будет принимать строку в цикле for, как в char в str ... это скажет мне, что это должен быть объект, поэтому я использовал функцию .split ().
Я проверилчто мои массивы были верны с оконными подсказками.
Я изменил переменную 'увеличен' на 2 и 4 и получил 3 b и d соответственно.
Я проверил indexOf (char) в ifоператоры и они возвращают -1.
Не похоже, что переменная char когда-либо пройдет начальный оператор if ... даже если var str = ZZ2, я все равно получу все строчные ответы.
Я программирую всего 3 недели, поэтому, пожалуйста, помогите мне понять не только, как это сделать в JavaScript, но и почему он не работает и почему правильный метод работает правильно.
<p id="response"></p>
//I want to advance these characters by 3, ignoring the !
<script>
var str = "2Za";
var lowercase = "abcdefghijklmnopqrstuvwxyz";
var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var increase = 3;
var answer = "";
var strarr = str.split("");
var lc = lowercase.split("");
var uc = uppercase.split("");
var char;
for (char in strarr) {
if (char in lc) {
answer += lc[(lc.indexOf(char) + increase) % 26];
} else if (char in uppercase) {
answer += uc[(uc.indexOf(char) + increase) % 26];
} else {
answer += char;
}
}
document.getElementById("response").innerHTML = answer
</script>
Яполучать все строчные "ccc"или какая буква соответствует моему увеличению var