JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのArrayBuffer.slice()メソッドの使い方を徹底解説

JavaScriptのArrayBufferオブジェクトは、固定長のバイナリデータバッファを表現するためのものです。このオブジェクトが持つslice()メソッドを使うと、元の配列バッファの一部(チャンク)を切り出し、新しい独立したArrayBufferオブジェクトとして取得できます。

slice()メソッドは2つの整数型の引数を受け取ります。それぞれ、切り出す範囲の「開始位置(そのインデックスを含む)」と「終了位置(そのインデックスを含まない)」を指定します。

構文(Syntax)

slice()メソッドの基本構文は以下の通りです。

arrayBuffer.slice(start, end);

パラメータ

  • start:切り出し範囲の開始インデックス(この位置を含みます)。負の値を指定した場合は、バッファの末尾から数えた位置として扱われます。
  • end:切り出し範囲の終了インデックス(この位置自体は含まれません)。省略した場合はバッファの末尾までが対象になります。

サンプルコード

以下の例では、16バイトのArrayBufferを作成し、Int32Arrayビューを通じて値を書き込んだ後、slice()メソッドでバイト範囲4〜11を切り出しています。

<html>
<head>
    <title>JavaScript Example</title>
</head>
<body>
    <script type="text/javascript">
        var arrayBuffer = new ArrayBuffer(16);
        var int32View = new Int32Array(arrayBuffer);
        int32View[1] = 102;
        var sliced = new Int32Array(arrayBuffer.slice(4, 12));
        document.write(" " + sliced);
    </script>
</body>
</html>

コードの解説

  • new ArrayBuffer(16)で、全体がゼロで初期化された16バイトのバッファを生成します。
  • Int32Arrayビューを介して、2番目の要素(バイト位置4〜7)に値「102」を書き込みます。
  • arrayBuffer.slice(4, 12)により、バイト位置4から11までの8バイト分が新しいバッファとして切り出されます。
  • 切り出されたバッファを再びInt32Arrayとして扱うことで、元の値を読み取れます。

実行結果(Output)

102,0

実行結果から、切り出されたバッファには書き込んだ値「102」と、初期状態のままの「0」が含まれていることが確認できます。このようにslice()メソッドを使えば、元のバッファに影響を与えることなく、必要な部分だけを取り出した新しいバッファを簡単に作成できます。

  1. JavaScriptのcall()メソッドとは?使い方と実行例をわかりやすく解説

    JavaScriptのcall()メソッドを使うと、あるオブジェクト向けに定義されたメソッドを、別のオブジェクトに対しても再利用できます。つまり、同じ関数をさまざまなオブジェクトから呼び出せるようになるのです。call()メソッドの大きな特徴は、引数(パラメータ)をカンマ区切りで個別に渡すという点です。これにより、thisの参照先を任意のオブジェクトに変更しながら、必要な値も同時に渡せます。call()メソッドの基本的な仕組みcall()は以下のような形式で使用します。関数名.call(thisArg, 引数1, 引数2, ...)第1引数(thisArg):関数内でthisとして参照されるオ

  2. JavaScriptのapply()メソッドとは?別オブジェクトで関数を再利用する方法を解説

    JavaScriptのapply()メソッドとは JavaScriptのapply()メソッドを使用すると、あるオブジェクト向けに定義したメソッドを、別のオブジェクトでもそのまま再利用できます。最大の特徴は、関数に渡す引数を配列としてまとめて指定できる点です。これにより、柔軟で使い回しやすい関数設計が可能になります。 apply()の基本構文は以下のとおりです。 func.apply(thisArg, [arg1, arg2, ...]) 第1引数(thisArg):関数内でthisとして参照されるオブジェクトを指定します。 第2引数(argsArray):関数へ渡す引数を配列形式で指定しま