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

JavaScriptの型付き配列(Typed Array)とは?バイナリデータ操作の基本を解説

JavaScriptの型付き配列は、配列のような振る舞いをするオブジェクトで、生のバイナリデータへ効率的にアクセスするための仕組みです。画像処理、音声処理、WebGLなど、パフォーマンスが求められる場面で活躍します。

通常の配列との違い

通常のArrayオブジェクトは要素の追加・削除によって動的にサイズが変化し、任意のJavaScriptの値を格納できます。JavaScriptエンジンはこうした配列に対しても最適化を行い、高速な動作を実現しています。

一方、型付き配列は扱えるデータの種類が固定されており、通常の配列とは明確に区別されます。
注意: 型付き配列に対して Array.isArray() を呼び出すと false が返されます。また、通常の配列で利用できるすべてのメソッドが型付き配列で使えるわけではない点にも留意してください。

バッファとビューという2つの概念

JavaScriptの型付き配列は、バッファビューという2つの仕組みによって実装されています。

バッファ(ArrayBuffer)

バッファはデータのかたまりを表すオブジェクトです。バッファ自体にはフォーマットの概念がなく、中身のデータに直接アクセスする手段も提供していません。

ビュー(View)

バッファ内のメモリにアクセスするには、ビューを使用します。ビューは「データ型」「開始オフセット」「要素数」を指定することで、無形式のデータを型付き配列として解釈できるようにします。

サンプルコード

// 固定長16バイトのバッファを作成
let buffer = new ArrayBuffer(16);

// バッファを操作するには、まずビューを作成する必要があります。
// ここでは、バッファ内のデータを32ビット符号付き整数の配列として扱うビューを作成します。
let int32View = new Int32Array(buffer);

// 通常の配列と同じように各要素へアクセスできます
for (let i = 0; i < int32View.length; i++) {
    int32View[i] = i * 2;
}
console.log(int32View);

実行結果

Int32Array { [Iterator] 0: 0, 1: 2, 2: 4, 3: 6 }

この例では、16バイトのバッファが Int32Array ビューによって4つの32ビット整数として解釈され、インデックスを使った代入が通常の配列と同様の記法で行えることがわかります。

  1. JavaScriptにおける配列の分割代入(Destructuring)の基本と使い方

    分割代入(Destructuring)とは、配列から値を取り出して個別の変数に展開するための構文です。ES2015(ES6)で導入されたこの機能を使うと、配列の各要素を簡潔かつ読みやすく変数に割り当てることができます。 配列の分割代入のサンプルコード 以下は、JavaScriptで配列の分割代入を行うコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport&quo

  2. JavaScriptにおける配列とSetの違いとは?重複値の扱いと要素アクセスをわかりやすく解説

    JavaScriptのSet(セット)オブジェクトは、ES2015(ES6)で新たに導入されたデータ型です。従来から広く使われている配列(Array)と比べると、いくつか重要な違いがあります。 配列とSetの主な違い 重複した値の扱い: 配列は同じ値をいくつでも格納できますが、Setでは同一の値は1つしか保持されません。重複した値は自動的に除外されるのが大きな特徴です。 要素へのアクセス方法: 配列ではインデックス(例:arr[0])を使って任意の位置の要素へ直接アクセスできます。一方、Setにはインデックスの概念がなく、要素は挿入された順序どおりに先頭から順番に辿ることしかできません。