コンテンツにスキップ

JavaScript/TypedArray

出典: フリー教科書『ウィキブックス(Wikibooks)』

TypedArray

[編集]

概要

[編集]

TypedArray は、JavaScript における型付き配列を表すオブジェクトで、異なる数値型のデータを効率的に操作するために使用されます。これらの配列は、固定された型の要素を持ち、通常の JavaScript 配列よりも高速にデータ処理を行うことができます。TypedArray は、ArrayBuffer に基づいて動作し、効率的なバイナリデータの操作を可能にします。

コンストラクタ

[編集]

TypedArray は直接インスタンス化することはできません。型付き配列を作成するには、特定の型付き配列(例えば、Int8ArrayFloat32Array など)を使用します。

型付き配列のインスタンス化

[編集]
new Int8Array(buffer [, byteOffset [, length]])
new Int8Array(length)
new Int8Array(typedArray)
new Int8Array(iterable)
  • 引数
    • buffer: ArrayBuffer または SharedArrayBuffer
    • byteOffset (オプション): バイト単位でのオフセット位置(デフォルトは 0)
    • length (オプション): 配列の要素数
    • length (数値): 配列の要素数を指定する
    • typedArray: 既存の型付き配列を基にする
    • iterable: 配列や反復可能オブジェクト(Map や Set など)
  • 戻り値: 指定された条件に基づく新しい型付き配列(例: Int8Array, Float32Array

プロパティ

[編集]

TypedArray.BYTES_PER_ELEMENT

[編集]
  • 各要素のバイト長(固定値)

TypedArray.prototype.length

[編集]
  • 配列内の要素数を返す(読み取り専用)

TypedArray.prototype.buffer

[編集]
  • 基盤となる ArrayBuffer を返す

TypedArray.prototype.byteOffset

[編集]
  • ArrayBuffer 内の先頭位置をバイト単位で返す

TypedArray.prototype.byteLength

[編集]
  • バッファの全体のバイト長を返す

メソッド

[編集]

TypedArray.prototype.set()

[編集]
typedArray.set(array [, offset])
  • 引数
    • array: コピー元の配列(型付き配列または通常の配列)
    • offset (オプション): 書き込みの開始インデックス(デフォルトは 0)
  • 戻り値: なし
  • 説明: 指定された配列から要素をコピーして設定する

TypedArray.prototype.subarray()

[編集]
typedArray.subarray(begin [, end])
  • 引数
    • begin: 開始インデックス
    • end (オプション): 終了インデックス(デフォルトは配列の終端)
  • 戻り値: 元の配列の部分範囲を共有する新しい型付き配列

使用例

[編集]
// TypedArrayの作成
const buffer = new ArrayBuffer(16);
const typedArray = new Int32Array(buffer);

// 配列の要素を設定
typedArray[0] = 42;
typedArray[1] = 123456;

console.log(typedArray[0]); // 42
console.log(typedArray[1]); // 123456

// 配列のコピー
const subArray = typedArray.subarray(0, 1);
console.log(subArray[0]); // 42

注意点

[編集]
  • TypedArray は、指定された型のデータのみを格納でき、他の型の値を代入しようとするとエラーが発生します。
  • 配列のサイズは、ArrayBuffer のサイズに基づきます。バッファのサイズが型付き配列の要素のバイト長の倍数でない場合、エラーになります。

関連オブジェクト

[編集]

ブラウザサポート

[編集]
  • Chrome 6+
  • Firefox 4+
  • Safari 5+
  • Edge 12+

仕様

[編集]
  • ECMAScript 2015 (ES6)