ノードのドキュメントから: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)
が17ではなく-1なのはなぜですか?
ノードドキュメントによると:
buf
。負の場合、オフセットはbufの終わりから計算されます。デフォルト:buf.length-1。のデフォルト値はbuf.length - 1
、バッファを逆方向に検索することを意味します。これは説明しますlastIndexOf('buffer', 5) = 5
が、説明しませんlastIndexOf('buffer', 4) = -1
。
検索は指定されたインデックスから始まり、そこからバックワードを処理します。したがって、あなたの例では5
、offsetIndexが、の場合、最初のバッファを見つけます(右から左に検索しているため)。ただし、を指定すると4
、そのインデックスの左側に「バッファ」オカレンスがなくなるため、-1が返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加