Как работает Node Buffer.lastIndexOf byteOffset? - PullRequest
1 голос
/ 03 марта 2020

Из документации узла: https://nodejs.org/api/buffer.html#buffer_buf_lastindexof_value_byteoffset_encoding

const buf = Buffer.from('this buffer is a buffer');

console.log(buf.lastIndexOf('buffer'));
// Prints: 17

Это имеет смысл для меня, однако это не так:

console.log(buf.lastIndexOf('buffer', 5));
// Prints: 5

console.log(buf.lastIndexOf('buffer', 4));
// Prints: -1

Почему индекс ('buffer', 5) не быть 17? Почему индекс ('buffer', 4) -1 вместо 17?

Узел do c говорит:

  • byteOffset: с чего начать поиск в buf. Если отрицательный, то смещение рассчитывается от конца буфера. По умолчанию: buf.length - 1.

Значение по умолчанию buf.length - 1 подразумевает, что он выполняет поиск в буфере в обратном направлении, что объясняет lastIndexOf('buffer', 5) = 5, но не объясняет lastIndexOf('buffer', 4) = -1.

1 Ответ

1 голос
/ 03 марта 2020

Поиск начинается с указанного индекса и оттуда работает обратное слово . Итак, в вашем примере, когда offsetIndex равен 5, он находит первый буфер (потому что он ищет справа налево). Но когда вы указываете 4, слева от этого индекса больше нет «буферных» вхождений, поэтому он возвращает -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...