JavaScript/TypedArray
TypedArray
編集概要
編集TypedArray は、JavaScript における型付き配列を表すオブジェクトで、異なる数値型のデータを効率的に操作するために使用されます。これらの配列は、固定された型の要素を持ち、通常の JavaScript 配列よりも高速にデータ処理を行うことができます。TypedArray は、ArrayBuffer に基づいて動作し、効率的なバイナリデータの操作を可能にします。
コンストラクタ
編集TypedArray は直接インスタンス化することはできません。型付き配列を作成するには、特定の型付き配列(例えば、Int8Array
や Float32Array
など)を使用します。
型付き配列のインスタンス化
編集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 のサイズに基づきます。バッファのサイズが型付き配列の要素のバイト長の倍数でない場合、エラーになります。
関連オブジェクト
編集- JavaScript/BigInt64Array
- JavaScript/BigUint64Array
- JavaScript/Int8Array
- JavaScript/Float32Array
- JavaScript/ArrayBuffer
- JavaScript/DataView
ブラウザサポート
編集- Chrome 6+
- Firefox 4+
- Safari 5+
- Edge 12+
仕様
編集- ECMAScript 2015 (ES6)