• Node.js Video Tutorials

Node.js - Buffer.keys() 方法



NodeJS 的 `buffer.keys()` 方法将返回一个迭代器对象。循环遍历该对象时,它将返回缓冲区对象中每个字节的键。

语法

以下是 NodeJS `keys()` 方法的语法:

buffer.keys()

参数

`buffer.keys()` 方法没有任何参数。

返回值

`buffer.keys()` 方法返回一个迭代器对象,该对象包含缓冲区对象中每个字节的键(索引值)。

示例

缓冲区是使用 NodeJS `Buffer.from()` 创建的,使用的字符串是 **Hello**。字符串的长度是 5,因此创建缓冲区时将保留 5 个字节。

现在,要获取每个字符的键,即索引值,可以使用 NodeJS `Buffer.keys()` 方法。由于该方法返回一个迭代器,因此可以使用 for-of 循环对其进行循环,如示例所示。

const buffer = Buffer.from('Hello');
for (let i of buffer.keys()) {
   console.log(i);
}

输出

执行后的输出如下:

0
1
2
3
4

示例

在这个例子中,我们将使用 `next()` 方法访问 `buffer.keys()` 返回的迭代器。

const buffer1 = Buffer.from('HELLO');
const bufferiterator = buffer1.keys();
let myitr = bufferiterator.next();
while(!myitr.done){
   console.log(myitr.value);
   myitr = bufferiterator.next();
}

输出

通过连续调用 `next()` 方法来循环迭代器,直到迭代器中 **`done` 键的值** 变为 `true`。`done: true` 表示已到达迭代器的末尾。

0
1
2
3
4

示例

我们还可以使用 `Buffer.keys()` 方法将 `buffer1` 的内容复制到另一个缓冲区。

const buffer1 = Buffer.from("HELLO");
const buffer2 = Buffer.alloc(buffer1.length);

for (const a of buffer1.keys()) {
   buffer2[a] = buffer1[a];
}
console.log("The string in buffer2 is "+buffer2.toString());

输出

在上面的例子中,我们使用字符串“HELLO”创建了一个缓冲区,为 `buffer2` 分配了相同长度的字节。之后,我们循环遍历 `buffer1` 的迭代器,并使用索引更新 `buffer2`,如示例所示。

The string in buffer2 is HELLO

示例

在示例中,我们使用字符串“Hello”的十六进制键码。

const buffer1 = Buffer.from('48656c6c6f', 'hex');
for (let i of buffer1.keys()) {
   console.log(i);
}   
console.log("the string is "+buffer1.toString());

输出

如果您查看打印的键,它们与字符串“Hello”中字符的数量相同。

0
1
2
3
4
the string is Hello
nodejs_buffer_module.htm
广告