MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

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

説明

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

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

TypedArray のインスタンス (すなわち、Int8Array などのインスタンス) を生成するとき、配列バッファーはメモリーの内部に生成されます (コンストラクターの引数として ArrayBuffer オブジェクトが提供されて、配列バッファーによって使用される場合)。また、このバッファーのアドレスはインスタンスの内部プロパティとして保存され、%TypedArray%.prototype のすべてのメソッドは、値の設定や取得などの操作で配列バッファーのアドレスを使用します。

プロパティへのアクセス

標準的な配列の添え字構文 (括弧を使用する表記) を使用して、配列の要素を参照できます。しかし 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

// Named properties are allowed, though (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
値は 0 になります。
TypedArray.name
コンストラクター名を文字列値で返します。例: "Int8Array"
get TypedArray[@@species]
派生オブジェクトを生成するために使用するコンストラクター関数です。
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 廃止された Typed Array のビューを TypedArray および ArrayBufferView として定義。ECMAScript 2015 で置き換えられました。
ECMAScript 2015 (6th Edition, ECMA-262)
TypedArray Objects の定義
標準 ECMA 標準では最初の定義。添え字付きプロパティおよび名前付きプロパティの動作を定義。new を必須とする。
ECMAScript Latest Draft (ECMA-262)
TypedArray Objects の定義
ドラフト  

ブラウザー実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 7.0 4.0 (2) 10 11.6 5.1
添え字付きプロパティでプロトタイプを探索しない (有) [1] 25 (25) ? ? ?
名前付きプロパティ (有) 30 (30) ? ? ?
new が必須 ? 44 (44) ? ? ?
コンストラクターでイテレート可能 ? 52 (52) ? ? ?
機能 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) ? ? ? ?
new が必須 ? ? 44.0 (44) ? ? ? ?
コンストラクターでイテレート可能 ? ? 52.0 (52) ? ? ? ?

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

互換性情報

ECMAScript 2015 より、TypedArray コンストラクターは new 演算子を使用しなければなりません。new を伴わずに TypedArray コンストラクターを関数として呼び出すと、TypeError が発生するようになりました。

var dv = Int8Array([1, 2, 3]);
// TypeError: calling a builtin Int8Array constructor 
// without new is forbidden
var dv = new Int8Array([1, 2, 3]);

関連情報

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

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