#javascript
#javascript
Вопрос:
Я все еще изучаю JS и хотел выполнить это упражнение без копирования, но теперь я застрял…Я знаю, что есть много других вещей, которые нужно исправить, но на данный момент …. Я не знаю, почему эта функция не позволяет пустым пространствам быть?
** Функция принимает строку для кодирования и коэффициент сдвига, а затем возвращает закодированную строку:
caesar(‘A’, 1) // просто сдвигает букву на 1: возвращает ‘B’ шифр должен сохранять заглавные буквы:
caesar(‘Hey’, 5) // возвращает ‘Mjd; не следует менять пунктуацию:
caesar(‘Привет, мир!’, 5) //возвращает ‘Mjqqt, Btwqi!’
const caesar = function (word, x) {
const alpha = "abcdefghijklmnopqrstuvwxyz".split("")
const alphaUp = "abcdefghijklmnopqrstuvwxyz".toUpperCase().split("")
const newString = []
for (const l in word) {
console.log(word[l])
console.log(typeof word[l])
if (word[l] === word[l].toUpperCase()) {
const index2 = alphaUp.findIndex(b => b == word[l])
newString.push(alphaUp[index2 x])
}
else if (word[l] === " ") {
newString.push(word[l])
}
else if (word[l] === word[l].toLowerCase()) {
const index = alpha.findIndex(a => a == word[l])
newString.push(alpha[index x])
}
}
console.log(newString.join(""))
}
caesar("Hello world!", 5)
Комментарии:
1. Привет и добро пожаловать в Stack Overflow, не могли бы вы добавить к своему вопросу ожидаемый результат?
2. @MartinPaucot готово, спасибо 🙂
Ответ №1:
Возьмем случай, когда вы достигаете пробела " "
в вашем цикле for, первая проверка
if (word[l] === word[l].toUpperCase())
Запуск .toUpperCase() при " "
возврате " "
, таким образом, вы выполняете свою логику для прописных букв и никогда не достигаете проверки, является ли это пробелом else if
. Изменение логического порядка на этот работает так, как вы предполагаете
if (word[l] === " ") {
newString.push(word[l])
}
else if (word[l] === word[l].toUpperCase()) {
const index2 = alphaUp.findIndex(b => b == word[l])
newString.push(alphaUp[index2 x])
} // rest of the code after
Комментарии:
1. О, да, конечно, я попробовал это, и это сработало! Спасибо!