Разбить строку на два символа в массиве.

Мы напишем функцию solution, которая принимает строку str в качестве аргумента.

Вам дана строка, содержащая x символов. Цель функции — разбить строку на пары по два символа и вернуть массив. Если строка содержит нечетное количество символов, то она должна заменить отсутствующий второй символ последней пары символом подчеркивания _.

Если строка пуста или имеет ложное значение, например undefined, вернуть пустой массив.

Пример:

solution("abcdef") 
// output: ["ab", "cd", "ef"]
solution("abcdefg")
// output: ["ab", "cd", "ef", "g_"]
solution("")
// output: []

В первом примере строка содержит четное количество символов, поэтому она разбита на пары по два символа.

Во втором примере строка содержит нечетное количество символов, поэтому, хотя строка разделена на две пары, последняя пара включает символ подчеркивания для завершения пары.

Третий пример содержит пустую строку, поэтому функция вернет пустой массив.

Чтобы запустить функцию, мы создаем переменную с именем newStr и присваиваем ей пустую строку:

let newStr = "";

Когда мы встречаем строку с нечетным количеством символов, мы присоединяем к строке символ подчеркивания. Результат будет присвоен newStr.

Затем мы создаем оператор if, который проверяет, содержит ли строка истинное значение. Если str окажется ложным, мы закончим функцию по умолчанию и вернем пустой массив.

if(str.length){
    //stuff here
}else{
    return [];
}

Внутри первого оператора if функция проверит, содержит ли строка нечетное количество символов. Если это так, как упоминалось выше, мы соединим символ подчеркивания с str и назначим новую строку newStr.

if (str.length % 2 === 1) {
    newStr = str + '_';
}

Последнее, что мы сделаем в этом блоке, — используем метод String match() для разделения нашей строки на пары по два. Метод match() извлекает результат сопоставления строки с регулярным выражением.

Регулярное выражение, которое мы будем использовать для разделения нашей строки на части по два:

/.{2}/g

В регулярном выражении квантификатор (число в фигурных скобках) соответствует двум символам в строке одновременно.

Метод match() возвращает массив, поэтому все, что нам нужно сделать, это использовать его с переменной newStr и вернуть массив совпадений.

return newStr.match(/.{2}/g)

Внутри нашего блока else в нашем операторе if мы вернем совпадения, найденные в нашем вводе str. Строка уже содержит четное количество символов, поэтому здесь нечего менять.

return str.match(/.{2}/g)

Вот и все. Вот полная функция:

Если вы нашли этот алгоритм полезным, ознакомьтесь с другими моими статьями об алгоритмах JavaScript:







Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.