JavaScript: Обход строк

Циклы подходят не только для обработки чисел, но и при работе со строками. В первую очередь благодаря возможности получить конкретный символ по его индексу. Ниже пример кода, который распечатывает каждую букву слова на отдельной строке:

const printNameBySymbol = (name) => {
  let i = 0;
  // Такая проверка будет выполняться до конца строки
  // включая последний символ. Его индекс `length - 1`.
  while (i < name.length) {
    // Обращаемся к символу по индексу
    console.log(name[i]);
    i = i + 1;
  }
};

const name = 'Arya';
printNameBySymbol(name);
// => A
// => r
// => y
// => a

Самое главное в этом коде — поставить правильное условие в while. Это можно сделать сразу двумя способами: i < name.length или i <= name.length - 1. Оба способа приводят к одному результату.

Цикл проходит по каждому символу строки по очереди:

'Arya'
 │ │ │ │
 A r y a
 ↓ ↓ ↓ ↓
каждый символ обрабатывается по очереди

Переворот строки

Вместо печати можно собирать новую строку. Например, напишем функцию, которая переворачивает строку:

const reverseString = (text) => {
  let result = '';
  let i = text.length - 1;
  while (i >= 0) {
    result = `${result}${text[i]}`;
    i -= 1;
  }
  return result;
};

console.log(reverseString('Arya'));   // => ayrA
console.log(reverseString('hexlet')); // => telxeh

Переменная result инициализируется пустой строкой как нейтральным элементом для конкатенации. Цикл начинается с последнего индекса (text.length - 1), двигается к нулю и завершается, когда индекс становится меньше нуля. На каждом шаге к результату добавляется текущий символ — и строка собирается в обратном порядке.

Задание

Напишите функцию maskCardNumber(), которая скрывает номер банковской карты: заменяет все символы строки на *, кроме последних четырёх.

maskCardNumber('1234567812345678'); // => '************5678'
maskCardNumber('12345678');         // => '****5678'

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются