Понимание среза в JavaScript

1

Рассмотрим следующую строку:

const str = "I am a good boy"

At, index 7 = g At, indedx 10 = d Но когда я использую, метод сплайсинга для строк, которые принимают два параметра, то есть начальный индекс, конечный индекс, поэтому, когда я использую

const result = str.slice(7, 10)
console.log(result)

Я ожидаю, что он вернется good но он только возвращает goo Почему это так, даже при индексе 10, d присутствует?

Согласно W3 Schools

slice() извлекает часть строки и возвращает извлеченную часть в новую строку.

Метод принимает 2 параметра: начальный индекс (позиция) и конечный индекс (позиция).

  • 1
    splice() или slice() ?
  • 1
    Он идет только до индекса, но не включает его.
Показать ещё 2 комментария
Теги:
string

3 ответа

5
Лучший ответ

Из документации MDN параметр endIndex (второй) является индексом, перед которым заканчивается извлечение из исходной строки.

Полезно, чтобы конечный индекс был одним местом после желаемого контента, потому что он упрощает математику. Если вы хотите, чтобы три символа начинались с позиции i, вы можете использовать source.slice(i, i+3).

2

Подумайте об этом как о том, как диапазон работает в математике, есть те, у которых есть инклюзивные границы и те, границы которых не включены, например, диапазон может быть одним из следующих,

  • закрытый диапазон - (1, 10), т.е. диапазон 2 - 9, не включает индексы 1 и 10

  • открытый диапазон - [1, 10], т.е. диапазон 1 - 10, включает 1 и 10.

  • половина открыта - [1, 10) или (1, 10), т.е. первый диапазон начинается с 1, но заканчивается на 9, второй начинается с 2 и заканчивается на 10.

поэтому функция сращивания занимает половину открытого диапазона формы [a, b), для которой он включает первый, но закрыт на нижней границе, т.е. не включает нижнюю границу.

  • 0
    Вот почему математика всегда важна. :)
  • 0
    Lol, это корень всех объяснений.
0

Похоже на это. Если вы думаете о них как о местах, где должны начинаться буквы, это имеет смысл.

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню