В чем разница методов для строки .slice() и .substr()

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
19 июля 2022

Оба метода работают схожим образом, они возвращают подстроку в заданном диапазоне:

const text = 'hexlet';

console.log(text.slice(1, 3)); // => ex

console.log(text.substr(1, 3)); // => exl

Метод slice принимает первым параметром индекс, с которого начинается извлечение, а вторым индекс, по которому идёт извлечение.

Метод substr первым параметром принимает тоже индекс, с которого идёт извлечение, а вторым параметром длину извлекаемой подстроки (поэтому в примере этот метод извлек на один символ больше).

Метод slice более универсальный и работает также с массивами. Метод substr считается устаревшим и не рекомендуется к использованию. Вместо него лучше использовать substring - 'этот метод работает так же, как slice.

1 0
Аватар пользователя Aleksey
Aleksey
05 апреля 2023

Метод substr() не является частью стандарта ECMAScript, а был добавлен в браузеры Netscape Navigator и Internet Explorer в далеком прошлом. В настоящее время он заменен на методы substring() и slice(), которые являются частью стандарта ECMAScript и поддерживаются всеми современными браузерами.

Во-вторых, метод substr() имеет неоднозначное поведение при передаче отрицательных значений в качестве аргументов. Например, если передать отрицательное значение второго аргумента, то метод substr() будет воспринимать его как индекс символа с конца строки, а не как количество символов, которые нужно извлечь. Это может привести к неожиданным результатам и ошибкам в коде.

0 0
Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
22 августа 2024

Методы .slice() и .substr() используются для извлечения части строки, но у них есть различия.

Метод .slice():

  • Принимает два аргумента: начальный индекс и конечный индекс, не включительно.
  • Если конечный индекс не указан, то метод возвращает подстроку до конца строки.
  • Можно указывать отрицательные индексы, которые отсчитываются с конца строки.
let str = "JavaScript";
console.log(str.slice(0, 4));  // "Java"
console.log(str.slice(4));     // "Script"
console.log(str.slice(-6));    // "Script"

Метод .substr():

  • Принимает также два аргумента, но начальный индекс и длину подстроки.
  • Также, если длина не указана, метод возвращает подстроку до конца строки.
  • Можно указыать отрицательный начальный индекс, но не отрицательную длину.
let str = "JavaScript";
console.log(str.substr(0, 4));  // "Java"
console.log(str.substr(4));     // "Script"
console.log(str.substr(-6, 6)); // "Script"

Основное различие в том, что .slice() использует начальный и конечный индексы, а .substr() использует начальный индекс и длину.

0 0
Познакомьтесь с основами JavaScript бесплатно