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 键的值变为真。Have the 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