FreeCode.Academy

Стратегии обучения

Уроки

Технологии

Участники

Проекты

Топики

Блоги

Офис

О проекте

, чтобы сохранить свой прогресс
С
Сергей Гуляев
22 нояб. 2021 г., 18:07

Обсуждение задания "Title Case a Sentence"

Где ощибка? Вывод на консоль в VSCode показывает верный по заданию ответ. (здесь код не хочет публиковаться)

Николай Ланец
Николай Ланец
23 нояб. 2021 г., 5:59
Для вставки кода в редактор есть специальная кнопочка (я так понял вы ей воспользовались в другом топике).
В вашем же случае ошибка вот в чем была:
out += arr[i].slice(1, arr[i].length).toLowerCase() + " ";
Здесь вы добавляете каждый раз пробел в конце строки после каждого элемента исходной строки. Но вы не учли последний элемент (после которого не надо пробел вставлять). В итоге у вас были правильные ответы плюс лишний пробел в конче строки. Это видно здесь:

Вам здесь следовало проверку счетчика добавить, например так:
out += arr[i].slice(1, arr[i].length).toLowerCase() + (i + 1 < arr.length ? " " : "");
Но я бы и вовсе набивал все в массив и потом просто объединил все пробелами. Например, так:
function titleCase(str) { let arr = str.split(" "); let strings = []; for (let i = 0; i < arr.length; i++) { strings.push(arr[i][0].toUpperCase() + arr[i].slice(1, arr[i].length).toLowerCase()); } const out = strings.join(" "); console.log(str, `'${out}'`); return out; }
В данном случае не приходится проверять последний элемент, так как Array.join(separator) вставляет указанный разделитель именно между элементами, но не перед первым и не после последнего.

И да, это было лишнее:


Добавить комментарий