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
- 引数
buffer
、byteOffset
(省略可)、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がある要素を含むかどうか判断し、それに応じて、
true
かfalse
を返します。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
といった値は添え字付きプロパティとして扱いませんので、プロトタイププロパティの値を返します。