value{string|Buffer|Uint8Array|integer} 要查找的值。byteOffset{integer}buf中开始查找的偏移量。默认值:buf.length - 1。encoding{string} 如果value是字符串,则指定value的字符编码。默认值:'utf8'。- 返回: {integer}
buf中最后一次出现value的索引,如果buf没包含value则返回-1。
与 [buf.indexOf()] 的区别是,查找的是 value 最后一次出现的索引,而不是首次出现。
const buf = Buffer.from('this buffer is a buffer');console.log(buf.lastIndexOf('this'));// 打印: 0console.log(buf.lastIndexOf('buffer'));// 打印: 17console.log(buf.lastIndexOf(Buffer.from('buffer')));// 打印: 17console.log(buf.lastIndexOf(97));// 打印: 15(97 是 'a' 的十进制 ASCII 值)console.log(buf.lastIndexOf(Buffer.from('yolo')));// 打印: -1console.log(buf.lastIndexOf('buffer', 5));// 打印: 5console.log(buf.lastIndexOf('buffer', 4));// 打印: -1const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));// 打印: 6console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));// 打印: 4
如果 value 不是一个字符串、数字、或 Buffer,则此方法将会抛出 TypeError。
如果 value 是一个数值,则它将会被强制转换成一个有效的字节值,即一个 0 到 255 之间的整数。
如果 byteOffset 不是一个数值,则会被转换成数值。
如果转换后的值为 NaN,比如 {} 或 undefined,则会查找整个 buffer。
这与 [String#lastIndexOf()] 是一致的。
const b = Buffer.from('abcdef');// 传入一个数值,但不是一个有效的字节。// 输出:2,相当于查找 99 或 'c'。console.log(b.lastIndexOf(99.9));console.log(b.lastIndexOf(256 + 99));// 传入被转换成 NaN 的 byteOffset。// 输出:1,查找整个 buffer。console.log(b.lastIndexOf('b', undefined));console.log(b.lastIndexOf('b', {}));// 传入被转换成 0 的 byteOffset。// 输出:-1,相当于传入 0。console.log(b.lastIndexOf('b', null));console.log(b.lastIndexOf('b', []));
如果 value 是一个空字符串或空 Buffer,则返回 byteOffset。
