Индексы в строках JavaScript

У каждого символа в строке есть номер. Этот номер называется индексом.

let word = 'code';

console.log(word[0]);

Результат:

c

Запись word[0] означает: возьми из строки word символ с индексом 0.

Что такое индекс

Индекс показывает позицию символа внутри строки.

let word = 'cat';

У этой строки такие индексы:

  • c - индекс 0;
  • a - индекс 1;
  • t - индекс 2.

Индекс нужен, когда мы хотим получить конкретный символ, а не всю строку целиком.

Индексы начинаются с нуля

В JavaScript первый символ строки имеет индекс 0, второй - 1, третий - 2 и так далее.

let language = 'JavaScript';

console.log(language[0]);
console.log(language[1]);
console.log(language[2]);

Результат:

J
a
v

Это важный момент. Если нужна первая буква, пишем не language[1], а language[0].

Как получить символ строки

Чтобы получить символ по индексу, после имени переменной ставят квадратные скобки и пишут номер символа.

let city = 'Москва';

console.log(city[0]);
console.log(city[3]);

Результат:

М
к

Такой способ работает и со строкой без переменной.

console.log('Привет'[0]);

Результат:

П

Но в реальном коде чаще строку сначала записывают в переменную.

Последний символ строки

У строки есть свойство length. Оно показывает длину строки.

Так как индексы начинаются с нуля, индекс последнего символа равен length - 1.

let word = 'JavaScript';

console.log(word.length);
console.log(word[word.length - 1]);

Результат:

10
t

В строке 10 символов, но последний индекс - 9. Поэтому выражение word.length - 1 дает индекс последнего символа.

Несуществующий индекс

Если обратиться к индексу, которого в строке нет, JavaScript вернет undefined.

let word = 'cat';

console.log(word[10]);

Результат:

undefined

В строке ‘cat’ есть только индексы 0, 1 и 2. Индекса 10 нет.

Отрицательные индексы через квадратные скобки тоже не работают.

let word = 'cat';

console.log(word[-1]);

Результат:

undefined

Для получения символа с конца строки есть метод at(), но его разберем отдельно.

Пробелы и знаки препинания

Пробелы и знаки препинания тоже занимают место в строке и получают свои индексы.

let text = 'Hi!';

console.log(text[0]);
console.log(text[1]);
console.log(text[2]);

Результат:

H
i
!

В строке с пробелом пробел тоже можно получить по индексу.

let message = 'Hi Tom';

console.log(message[2]);

Результатом будет пробел. В консоли его сложно заметить, но он есть.

Строку нельзя изменить по индексу

Символ строки можно прочитать по индексу, но нельзя заменить напрямую.

let word = 'cat';

word[0] = 'b';

console.log(word);

Результат:

cat

Строка не изменилась. Если нужно получить другую строку, создают новое значение.

let word = 'cat';
let newWord = 'b' + word.slice(1);

console.log(newWord);

Результат:

bat

Метод slice() подробно разберем в отдельном уроке.

Итого

Индекс - это номер символа в строке.

  • Индексы начинаются с 0.
  • Символ можно получить через квадратные скобки: word[0].
  • Последний символ можно получить через word[word.length - 1].
  • Если индекса нет, вернется undefined.
  • Строку нельзя изменить прямой заменой символа по индексу.