Обычно мне нравится сосредотачиваться на основах информатики в своих сообщениях в блоге, но на этот раз я хотел провести вас через небольшое упражнение по JS, которое я нашел на CodeWars. Это Ката называется бормотанием, потому что оно похоже на бормотание. Данное описание короткое и простое:

This time no story, no theory. The examples below show you how to write function accum:
Examples:
accum("abcd") -> "A-Bb-Ccc-Dddd"
accum("RqaEzty") -> "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"
accum("cwAt") -> "C-Ww-Aaa-Tttt"
The parameter of accum is a string which includes only letters from a..z and A..Z.

Таким образом, для этой задачи нашим вводом будет строка случайных букв, а вывод должен возвращать соответствующую букву, повторенную n раз, в зависимости от ее положения в строке. Кроме того, первый экземпляр буквы должен быть заглавным. Не слишком сложное, но приятное небольшое упражнение для практики манипулирования строками JS.

function accum(s) {
 let arr = []
 for (let i = 0; i < s.length; i++) {
 arr.push(format(s[i], i + 1))
 }
 return arr.join(‘-’)
 }
function format(s, num) {
 let letter = s.toUpperCase()
while (letter.length !== num) {
 letter += s.toLowerCase()
 }
 return letter
 }

Теперь давайте пройдемся по тому, что все это делает. Мы должны создать нашу основную функцию accum со строкой в ​​качестве аргумента. Теперь мы должны создать массив, чтобы иметь больший контроль над нашими манипуляциями, и перебрать каждый символ в строке. При циклическом просмотре нашей строки мы помещаем символ в новый массив, а затем, при необходимости, повторяем это до тех пор, пока не будет создано правильное количество итераций.

Во время цикла вы можете видеть, что мы также вызываем функцию format. Это необходимо для обработки регистра букв, чтобы позиция [0] была заглавной, а остальные — строчными. Форматирование необходимо выполнять отдельно для каждой соответствующей буквы во входных данных, поэтому это будет вызываться внутри цикла for. После правильного зацикливания теперь мы можем воссоединить символы в строке и добавить между каждым из соображений форматирования.

Конечный результат должен выглядеть так:

//input
console.log(accum('abcdefg')) 
//output
“A-Bb-Ccc-Dddd-Eeeee-Ffffff-Ggggggg”

И это все, что нужно сделать. Не недооценивайте важность оттачивания CodeWars и LeetCode!