从节点文档中: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?

节点文档说:


byteOffset:在buf中开始搜索的位置。如果为负,则从buf的末端开始计算偏移量。默认值:buf.length-1。


默认值buf.length - 1表示它将向后搜索Buffer,这将解释lastIndexOf('buffer', 5) = 5,但不会解释lastIndexOf('buffer', 4) = -1

最佳答案

搜索从指定的索引开始,然后从该索引开始工作。因此,在您的示例中,当offsetIndex为5时,它将找到第一个缓冲区(因为它是从右到左搜索)。但是,当您指定4时,该索引的左侧不再有“缓冲区”出现,因此它返回-1。

关于node.js - Node Buffer.lastIndexOf byteOffset如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60498403/

10-16 20:50