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'Полезное
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'Полезное
Ваше упражнение проверяется по этим тестам
import { expect, test } from 'vitest';
import f from './index.js';
test('iteration over string', () => {
expect(f('1234567812345678')).toBe('************5678');
expect(f('12345678')).toBe('****5678');
});Решение учителя откроется через:
20:00
