Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】ArrayBuffer::ArrayBuffer.prototype.sliceインスタンスメソッドの使い方

ArrayBuffer.prototype.slice()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

ArrayBuffer.prototype.slice()メソッドは、指定されたArrayBufferオブジェクトから、一部分を切り出し、新しいArrayBufferオブジェクトとして返すメソッドです。このメソッドは、元のArrayBufferの内容を一切変更することなく、データのコピーを生成します。

このメソッドを使用すると、startインデックスとendインデックスをバイト単位で指定することで、元のArrayBufferの特定範囲のバイトデータを効率的に抽出できます。startインデックスが省略された場合は0(バッファの先頭)から、endインデックスが省略された場合は元のバッファの最後までが範囲となります。また、負のインデックスを指定した場合は、バッファの末尾からのオフセットとして解釈されます。

返される新しいArrayBufferオブジェクトには、指定された範囲のバイトデータが完全にコピーされて格納されます。これは、大きなバイナリデータの中から特定のデータブロックを抽出したり、処理したい部分だけをメモリに保持したりする際に非常に有用です。例えば、ネットワーク通信で受信したファイルデータの一部を扱う場合などに活用できます。

ただし、このメソッドがコピーするのは「生」のバイトデータのみである点に注意が必要です。つまり、抽出したデータを数値や文字列といった特定の型として扱いたい場合は、返された新しいArrayBufferに対してUint8ArrayやDataViewなどのTypedArrayビューオブジェクトを別途作成し、それを通してアクセスする必要があります。

公式リファレンス: ArrayBuffer.prototype.slice()

構文(syntax)

1const buffer = new ArrayBuffer(10);
2const newBuffer = buffer.slice(2, 5);

引数(parameters)

begin, end = this.byteLength

  • begin: number = 0: コピーを開始するバイト位置を指定する整数
  • end: number = this.byteLength: コピーを終了するバイト位置を指定する整数。省略された場合はArrayBufferの末尾までコピーされます。

戻り値(return)

ArrayBuffer

指定された範囲のバイト列をコピーした新しいArrayBufferインスタンスを返します。

関連コンテンツ