buf.compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]])


  • target <Buffer> | <Uint8Array> 用于比较 bufBufferUint8Array

    ¥target <Buffer> | <Uint8Array> A Buffer or Uint8Array with which to compare buf.

  • targetStart <integer> target 内开始比较的偏移量。默认值:0

    ¥targetStart <integer> The offset within target at which to begin comparison. Default: 0.

  • targetEnd <integer> target 中结束比较(不包括)的偏移量。默认值:target.length

    ¥targetEnd <integer> The offset within target at which to end comparison (not inclusive). Default: target.length.

  • sourceStart <integer> buf 内开始比较的偏移量。默认值:0

    ¥sourceStart <integer> The offset within buf at which to begin comparison. Default: 0.

  • sourceEnd <integer> buf 中结束比较(不包括)的偏移量。默认值:buf.length

    ¥sourceEnd <integer> The offset within buf at which to end comparison (not inclusive). Default: buf.length.

  • 返回:<integer>

    ¥Returns: <integer>

buftarget 进行比较并返回数字,该数字指示 buf 在排序顺序中是在 target 之前、之后还是与 target 相同。比较基于每个 Buffer 中的实际字节序列。

¥Compares buf with target and returns a number indicating whether buf comes before, after, or is the same as target in sort order. Comparison is based on the actual sequence of bytes in each Buffer.

  • 如果 targetbuf 相同,则返回 0

    ¥0 is returned if target is the same as buf

  • 如果排序时 target 应该在 buf 之前,则返回 1

    ¥1 is returned if target should come before buf when sorted.

  • 如果排序时 target 应该在 buf 之后,则返回 -1

    ¥-1 is returned if target should come after buf when sorted.

import { Buffer } from 'node:buffer';

const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
const buf3 = Buffer.from('ABCD');

console.log(buf1.compare(buf1));
// Prints: 0
console.log(buf1.compare(buf2));
// Prints: -1
console.log(buf1.compare(buf3));
// Prints: -1
console.log(buf2.compare(buf1));
// Prints: 1
console.log(buf2.compare(buf3));
// Prints: 1
console.log([buf1, buf2, buf3].sort(Buffer.compare));
// Prints: [ <Buffer 41 42 43>, <Buffer 41 42 43 44>, <Buffer 42 43 44> ]
// (This result is equal to: [buf1, buf3, buf2].)const { Buffer } = require('node:buffer');

const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
const buf3 = Buffer.from('ABCD');

console.log(buf1.compare(buf1));
// Prints: 0
console.log(buf1.compare(buf2));
// Prints: -1
console.log(buf1.compare(buf3));
// Prints: -1
console.log(buf2.compare(buf1));
// Prints: 1
console.log(buf2.compare(buf3));
// Prints: 1
console.log([buf1, buf2, buf3].sort(Buffer.compare));
// Prints: [ <Buffer 41 42 43>, <Buffer 41 42 43 44>, <Buffer 42 43 44> ]
// (This result is equal to: [buf1, buf3, buf2].)

可选的 targetStarttargetEndsourceStartsourceEnd 参数可用于分别将比较限制在 targetbuf 内的特定范围内。

¥The optional targetStart, targetEnd, sourceStart, and sourceEnd arguments can be used to limit the comparison to specific ranges within target and buf respectively.

import { Buffer } from 'node:buffer';

const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);

console.log(buf1.compare(buf2, 5, 9, 0, 4));
// Prints: 0
console.log(buf1.compare(buf2, 0, 6, 4));
// Prints: -1
console.log(buf1.compare(buf2, 5, 6, 5));
// Prints: 1const { Buffer } = require('node:buffer');

const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);

console.log(buf1.compare(buf2, 5, 9, 0, 4));
// Prints: 0
console.log(buf1.compare(buf2, 0, 6, 4));
// Prints: -1
console.log(buf1.compare(buf2, 5, 6, 5));
// Prints: 1

如果 targetStart < 0sourceStart < 0targetEnd > target.byteLengthsourceEnd > source.byteLength,则抛出 ERR_OUT_OF_RANGE

¥ERR_OUT_OF_RANGE is thrown if targetStart < 0, sourceStart < 0, targetEnd > target.byteLength, or sourceEnd > source.byteLength.