slice() возвращает часть строки по индексам.
Это один из самых удобных способов взять подстроку: от одного индекса до другого, от середины до конца или несколько символов с конца строки.
Синтаксис
str.slice(start)
str.slice(start, end)
Метод вызывается у строки и возвращает новую строку.
Как работает slice()
const text = "JavaScript";
console.log(text.slice(0, 4)); // "Java"
console.log(text.slice(4)); // "Script"
Первый аргумент - индекс начала, второй - индекс конца.
Важно: символ с индексом end в результат не входит.
const text = "hello";
console.log(text.slice(1, 4)); // "ell"
Здесь берутся символы с индексами 1, 2 и 3.
Если второй аргумент не передать
Если передать только start, строка будет взята от этого индекса до конца.
const text = "JavaScript";
console.log(text.slice(4)); // "Script"
Отрицательные индексы
slice() поддерживает отрицательные индексы.
Это значит, что можно считать с конца строки:
const text = "JavaScript";
console.log(text.slice(-6)); // "Script"
console.log(text.slice(-6, -3)); // "Scr"
Это особенно удобно, когда нужно взять последние символы строки.
const file = "image.png";
console.log(file.slice(-3)); // "png"
Исходная строка не меняется
Строки в JavaScript неизменяемы, поэтому slice() не меняет исходную строку, а возвращает новое значение.
const text = "JavaScript";
const part = text.slice(0, 4);
console.log(text); // "JavaScript"
console.log(part); // "Java"
Если индексы выходят за диапазон
slice() не падает с ошибкой, если индекс выходит за пределы строки.
const text = "abc";
console.log(text.slice(0, 10)); // "abc"
console.log(text.slice(10)); // ""
Если начало оказывается правее конца, результатом будет пустая строка.
const text = "hello";
console.log(text.slice(4, 2)); // ""
Когда это полезно
slice() удобно использовать, когда:
- нужно взять часть строки по индексам
- надо получить начало или конец строки
- нужно вырезать расширение файла, префикс или суффикс
Пример:
const phone = "+79991234567";
const code = phone.slice(0, 2);
console.log(code); // "+7"
slice() и substring()
slice() и substring() похожи, но работают не одинаково.
У slice() есть важный плюс: он поддерживает отрицательные индексы.
const text = "JavaScript";
console.log(text.slice(-6)); // "Script"
console.log(text.substring(-6)); // "JavaScript"
Если нужна работа с концом строки, slice() обычно удобнее.
Частые ошибки
Думать, что конечный индекс включается
const text = "hello";
console.log(text.slice(1, 4)); // "ell"
Символ с индексом 4 в результат не попадёт.
Путать отрицательные индексы с ошибкой
const text = "hello";
console.log(text.slice(-2)); // "lo"
Для slice() отрицательные индексы - это нормальное и полезное поведение.
Быстрая памятка
slice(start, end)возвращает часть строки- символ с индексом
endне включается - если
endне передать, строка берётся до конца slice()поддерживает отрицательные индексы- исходная строка не меняется
Коротко
slice() - это метод строки в JavaScript, который возвращает часть строки по индексам. Его особенно удобно использовать, когда нужно взять подстроку с конца, потому что метод поддерживает отрицательные индексы.