TypedArray

TypedArray オブジェクトは背後にあるバイナリデータバッファの、配列状のビューを表します。TypedArray という名称のグローバルプロパティはなく、また直接的に見える TypedArray コンストラクタもありません。代わりにさまざまなグローバルプロパティがいくつかあり、それらの値は後述するように特定の要素タイプの Typed Array コンストラクタになります。それぞれのページで、各種の要素を持つ Typed Array で使用できる共通的なプロパティやメソッドを確認できます。

構文

new TypedArray(length);
new TypedArray(typedArray);
new TypedArray(object);
new TypedArray(buffer [, byteOffset [, length]]);

where TypedArray() is one of:

Int8Array();
Uint8Array();
Uint8ClampedArray();
Int16Array();
Uint16Array();
Int32Array();
Uint32Array();
Float32Array();
Float64Array();

引数

length
引数 length を付加して呼び出すと、length 数の 0 を持つ Typed Array を生成します。
typedArray
任意の Typed Array 型 (Int32Array など) のオブジェクトを示す引数 typedArray を付加して呼び出すと、typedArray を新たな Typed Array にコピーします。typedArray 内の各値は、新しい配列へコピーされる前に対応する型へ変換されます。
object
引数 object を付加して呼び出すと、TypedArray.from() メソッドを使用したかのように新たな Typed Array を生成します。
buffer, byteOffset, length
引数 bufferbyteOffset (省略可)、length (省略可) を付加して呼び出すと、指定した ArrayBuffer のビューになる新たな Typed Array を生成します。引数 byteOffset および length は、Typed Array ビューで公開するメモリ範囲を指定します。両方とも省略すると、buffer のすべてを公開します。length のみ省略すると、buffer の残りの部分を公開します。

説明

ECMAScript 6 では TypedArray コンストラクタを、すべての TypedArray コンストラクタの [[Prototype]] と定義しています。このコンストラクタは直接公開されてはいません。グローバルな %TypedArray% または TypedArray プロパティは存在しません。Object.getPrototypeOf(Int8Array.prototype) などの形式でのみ直接アクセスできます。すべての TypedArray 系コンストラクタは、共通的なプロパティを %TypedArray% コンストラクタ関数から継承します。またすべての Typed Array プロトタイプ (TypedArray.prototype) は、自身の [[Prototype]] として %TypedArray%.prototype を持ちます。

%TypedArray% コンストラクタ自体は、特に役立つものではありません。サブクラス化をサポートする JS エンジンでオブジェクトを生成する際に使用する場合を除き、コンストラクタを呼び出すか new 構文を使用すると TypeError が発生します。現在はそのようなエンジンがありませんので、%TypedArray% はすべての TypedArray コンストラクタへのポリフィル関数およびプロパティとしてのみ有用です。

プロパティへのアクセス

標準的な配列の添え字構文 (括弧を使用する表記) を使用して、配列の要素を参照できます。しかし Typed Array の添え字付きプロパティで値を取得または設定するときは、範囲外の添え字でもプロパティのプロトタイプチェーンを探索しません。添え字付きプロパティは ArrayBuffer を調べるのであり、オブジェクトのプロパティは探索しません。他のオブジェクト同様に、名前付きプロパティは使用できます。

// 標準的な配列構文を使用して設定および取得
var int16 = new Int16Array(2);
int16[0] = 42;
console.log(int16[0]); // 42

// プロトタイプで添え字付き配列を使用しても探索しない (Fx 25)
Int8Array.prototype[20] = "foo";
(new Int8Array(32))[20]; // 0
// even when out of bound
Int8Array.prototype[20] = "foo";
(new Int8Array(8))[20]; // undefined
// or with negative integers
Int8Array.prototype[-1] = "foo";
(new Int8Array(8))[-1]; // undefined

// 名前付きプロパティは使用可能 (Fx 30)
Int8Array.prototype.foo = "bar";
(new Int8Array(32)).foo; // "bar"

TypedArray オブジェクト

サイズ (バイト数) 説明 Web IDL 型 同等の C 型
Int8Array 1 8 ビット長、2 の補数方式の符号付き整数値 byte int8_t
Uint8Array 1 8 ビット長、符号なし整数値 octet uint8_t
Uint8ClampedArray 1 8 ビット長、符号なし整数値 (切り詰め) octet uint8_t
Int16Array 2 16 ビット長、2 の補数方式の符号付き整数値 short int16_t
Uint16Array 2 16 ビット長、符号なし整数値 unsigned short uint16_t
Int32Array 4 32 ビット長、2 の補数方式の符号付き整数値 long int32_t
Uint32Array 4 32 ビット長、符号なし整数値 unsigned long uint32_t
Float32Array 4 32 ビット長、IEEE 方式 浮動小数点数 unrestricted float float
Float64Array 8 64 ビット長、IEEE 方式 浮動小数点数 unrestricted double double

プロパティ

TypedArray.BYTES_PER_ELEMENT
さまざまな Typed Array オブジェクトの、要素のサイズを数値で返します。
TypedArray.length
値は 3 になります。
TypedArray.name
コンストラクタ名を文字列値で返します。例: "Int8Array"
TypedArray.prototype
TypedArray オブジェクトのプロトタイプです。

メソッド

TypedArray.from()
配列状のオブジェクトやイテレート可能なオブジェクトから、新たな Typed Array を生成します。Array.from() もご覧ください。
TypedArray.of()
引数に与えた値をもとに、新たな Typed Array を生成します。Array.of() もご覧ください。

TypedArray プロトタイプ

すべての TypedArray は、TypedArray.prototype から継承します。

プロパティ

TypedArray.prototype.constructor
インスタンスのプロトタイプを作る関数を返します。これは、デフォルトで対応するtyped array type関数です。
TypedArray.prototype.buffer 読取専用
typed arrayによって参照されるArrayBufferを返します。構築時に設定され、読取専用となります。
TypedArray.prototype.byteLength 読取専用
ArrayBufferの開始位置からのtyped arrayの(バイト単位の)長さを返します。構築時に設定され、読取専用となります。
TypedArray.prototype.byteOffset 読取専用
ArrayBufferの開始位置からのtyped arrayの(バイト単位の)オフセットを返します。構築時に設定され、読取専用となります。
TypedArray.prototype.length 読取専用
typed array内に保持された要素の数を返します。構築時に設定され、読取専用となります。

メソッド

TypedArray.prototype.copyWithin()
配列内で一連の配列要素をコピーします。Array.prototype.copyWithin()も確かめて下さい。
TypedArray.prototype.entries()
配列内で各インデックスに対して、キー/バリュー ペアを含む新しいArray Iteratorを返します。Array.prototype.entries()も確かめて下さい。
TypedArray.prototype.every()
配列内のすべての要素が関数によって提供されたテストに合格するかどうかテストを実行します。Array.prototype.every()も確かめて下さい。
TypedArray.prototype.fill()
開始位置から終了位置までの配列のすべての要素を固定値で設定します。Array.prototype.fill()も確かめて下さい。
TypedArray.prototype.filter()
与えられたフィルタリング関数がtrueを返す配列のすべての要素をもつ新しい配列を生成します。Array.prototype.filter()も確かめて下さい。
TypedArray.prototype.find()
配列要素が与えられたテスト関数を満足したら、配列の値を返します。満足しなかった場合、undefinedを返します。 Array.prototype.find()を確かめて下さい。
TypedArray.prototype.findIndex()
配列要素が与えられたテスト関数を満足したら、配列のインデックスを返します。満足しなかった場合、-1を返します。Array.prototype.findIndex()も確かめて下さい。
TypedArray.prototype.forEach()
配列内の各要素に対する関数を呼び出します。Array.prototype.forEach()も確かめて下さい。
TypedArray.prototype.includes()
typed arrayがある要素を含むかどうか判断し、それに応じて、truefalseを返します。 Array.prototype.includes()も確かめて下さい。
TypedArray.prototype.indexOf()
指定された値に等しい配列内の要素の最初のインデックスを返します。見つからない場合、-1を返します。Array.prototype.indexOf()も確かめて下さい。
TypedArray.prototype.join()
すべての配列要素を文字列に結合します。Array.prototype.join()も確かめて下さい。
TypedArray.prototype.keys()
配列内の各インデックスに対するキーを含む新しいArray Iteratorを返します。Array.prototype.keys()も確かめて下さい。
TypedArray.prototype.lastIndexOf()
指定された値と等しい配列の要素の最後のインデックスを返します。見つからない場合、-1を返します。Array.prototype.lastIndexOf()を確かめて下さい。
TypedArray.prototype.map()
この配列のすべての要素で与えられた関数を呼び出した結果をもつ新しい配列を生成します。Array.prototype.map()も確かめて下さい。
TypedArray.prototype.move() 未実装
TypedArray.prototype.copyWithin()の以前のの非標準バージョン
TypedArray.prototype.reduce()
アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(左から右へ)は単一の値になります。Array.prototype.reduce()も確かめて下さい。
TypedArray.prototype.reduceRight()
アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(右から左へ)は単一の値になります。Array.prototype.reduceRight()を確かめて下さい。
TypedArray.prototype.reverse()
配列要素の順番を反転させます。— 最初の要素は最後になり、最後の要素は最初になります。Array.prototype.reverse()も確かめて下さい。
TypedArray.prototype.set()
入力値を指定した配列から読み込み、typed array内に複数の値を格納します。
TypedArray.prototype.slice()
配列の一部を取り出して新しい配列を返します。Array.prototype.slice()も確かめて下さい。
TypedArray.prototype.some()
ある配列の少なくとも 1 つの要素が与えられたテスト関数を満たした場合にtrueを返します。Array.prototype.some()も確かめて下さい。
TypedArray.prototype.sort()
配列の要素をソートし、その結果を返します。Array.prototype.sort()も確かめて下さい。
TypedArray.prototype.subarray()
与えられた開始位置と終了位置の要素インデックスの新しいTypedArrayを返します。
TypedArray.prototype.values()
配列内で各インデックスに対する値を含む新しいArray Iteratorオブジェクトを返します。Array.prototype.values()を確かめて下さい。
TypedArray.prototype.toLocaleString()
配列と要素を表すローカライズされた文字列を返します。Array.prototype.toLocaleString()も確かめて下さい。
TypedArray.prototype.toString()
配列と要素を表す文字列を返します。Array.prototype.toString()も確かめて下さい。
TypedArray.prototype[@@iterator]()
配列内で各インデックスに対する値を含む新しいArray Iteratorオブジェクトを返します。

仕様

仕様書 策定状況 コメント
Typed Array Specification Obsolete Typed Array のビューを TypedArray および ArrayBufferView として定義。ECMAScript 6 で置き換えられました。
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'TypedArray Objects' in that specification.
Standard ECMA 標準では最初の定義

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 7.0 4.0 (2) 10 11.6 5.1
添え字付きプロパティでプロトタイプを探索しない (有) [1] 25 (25) ? ? ?
名前付きプロパティ (有) 30 (30) ? ? ?
機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Android 版 Chrome
基本サポート 4.0 (有) 4.0 (2) 10 11.6 4.2 (有)
添え字付きプロパティでプロトタイプを探索しない ? (有) [1] 25.0 (25) ? ? ? (有) [1]
名前付きプロパティ ? (有) 30.0 (30) ? ? ? ?

[1] -1 といった値は添え字付きプロパティとして扱いませんので、プロトタイププロパティの値を返します。

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: yyss, teoli, ethertank
 最終更新者: yyss,