Перебор строк в JavaScript
- Что значит перебрать строку
- Перебор строки через for…of
- Перебор строки через for с индексом
- Поиск символа в строке
- Подсчет символов
- Как собрать новую строку
- Что важно помнить
- Итого
Строку в JavaScript можно перебирать почти так же, как массив. На каждом шаге цикла мы получаем очередной символ и можем что-то с ним сделать: вывести в консоль, проверить условие, посчитать количество вхождений или собрать новую строку.
let word = 'код';
for (let letter of word) {
console.log(letter);
}
Результат:
к
о
д
Что значит перебрать строку
Перебрать строку - значит пройтись по ее символам один за другим.
let language = 'JavaScript';
console.log(language[0]);
console.log(language[1]);
console.log(language[2]);
Результат:
J
a
v
У каждого символа есть индекс. Как и в массиве, отсчет начинается с нуля.
Но вручную писать отдельную строку для каждого символа неудобно. Поэтому для перебора используют цикл.
Перебор строки через for…of
Самый простой способ пройтись по символам строки - использовать цикл for…of.
let text = 'Hello';
for (let symbol of text) {
console.log(symbol);
}
На каждой итерации в переменную symbol попадает очередной символ строки.
Название переменной может быть любым, но лучше выбирать понятное: symbol, letter, char.
let name = 'Анна';
for (let letter of name) {
console.log(letter);
}
for…of хорошо подходит, когда нужен сам символ, а его индекс не важен.
Перебор строки через for с индексом
Если кроме символа нужен его номер, удобнее использовать обычный цикл for.
let word = 'code';
for (let i = 0; i < word.length; i++) {
console.log(i + ': ' + word[i]);
}
Результат:
0: c
1: o
2: d
3: e
word.length возвращает длину строки. Пока i меньше длины строки, цикл продолжает работу.
Запись word[i] получает символ по индексу.
let word = 'JavaScript';
for (let i = 0; i < word.length; i++) {
let symbol = word[i];
console.log(symbol);
}
Такой вариант полезен, когда нужно сравнивать текущий символ с соседними или сохранять позицию найденного символа.
Поиск символа в строке
Цикл можно использовать, чтобы найти первый подходящий символ.
let email = 'user@example.com';
for (let symbol of email) {
if (symbol === '@') {
console.log('Символ @ найден');
break;
}
}
Как только символ найден, срабатывает break, и цикл завершается.
Если нужно узнать индекс найденного символа, используем обычный for.
let email = 'user@example.com';
for (let i = 0; i < email.length; i++) {
if (email[i] === '@') {
console.log('Индекс: ' + i);
break;
}
}
Результат:
Индекс: 4
Подсчет символов
Еще один частый сценарий - посчитать, сколько раз символ встречается в строке.
let message = 'JavaScript';
let count = 0;
for (let letter of message) {
if (letter === 'a') {
count++;
}
}
console.log(count);
Результат:
2
На каждом шаге проверяем текущий символ. Если это буква a, увеличиваем счетчик.
По такому же принципу можно посчитать пробелы.
let text = 'Я учу JavaScript';
let spaces = 0;
for (let symbol of text) {
if (symbol === ' ') {
spaces++;
}
}
console.log(spaces);
Как собрать новую строку
Символы строки можно читать по индексу, но нельзя заменить напрямую.
let word = 'cat';
word[0] = 'b';
console.log(word);
Результат останется прежним:
cat
Строки в JavaScript неизменяемые. Если нужно получить измененный текст, собираем новую строку.
let word = 'cat';
let result = '';
for (let i = 0; i < word.length; i++) {
if (i === 0) {
result += 'b';
} else {
result += word[i];
}
}
console.log(result);
Результат:
bat
Мы не изменили старую строку word, а создали новую строку result.
Что важно помнить
Для простого перебора символов чаще всего достаточно for…of.
Если нужен индекс, используйте обычный for и обращение через квадратные скобки.
Строки нельзя изменять по индексу. Можно только создать новую строку на основе старой.
Методы строк, такие как includes(), indexOf(), startsWith() и endsWith(), часто решают задачу проще цикла. Цикл нужен, когда требуется своя логика на каждом символе.
Итого
1. Строку можно перебрать по символам.
2. for…of удобен, когда нужен сам символ.
3. Обычный for удобен, когда нужен индекс символа.
4. Для досрочной остановки перебора можно использовать break.
5. Строки в JavaScript неизменяемые, поэтому для изменений собирают новую строку.