Рассмотрим следующую строку:
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 параметра: начальный индекс (позиция) и конечный индекс (позиция).
Из документации MDN параметр endIndex
(второй) является индексом, перед которым заканчивается извлечение из исходной строки.
Полезно, чтобы конечный индекс был одним местом после желаемого контента, потому что он упрощает математику. Если вы хотите, чтобы три символа начинались с позиции i
, вы можете использовать source.slice(i, i+3)
.
Подумайте об этом как о том, как диапазон работает в математике, есть те, у которых есть инклюзивные границы и те, границы которых не включены, например, диапазон может быть одним из следующих,
закрытый диапазон - (1, 10), т.е. диапазон 2 - 9, не включает индексы 1 и 10
открытый диапазон - [1, 10], т.е. диапазон 1 - 10, включает 1 и 10.
половина открыта - [1, 10) или (1, 10), т.е. первый диапазон начинается с 1, но заканчивается на 9, второй начинается с 2 и заканчивается на 10.
поэтому функция сращивания занимает половину открытого диапазона формы [a, b), для которой он включает первый, но закрыт на нижней границе, т.е. не включает нижнюю границу.
Похоже на это. Если вы думаете о них как о местах, где должны начинаться буквы, это имеет смысл.
splice()
илиslice()
?