→
TypedArray オブジェクトは、背後にあるバイナリー データ バッファーの、配列状のビューを表します。TypedArray という名称のグローバル プロパティはなく、また直接 TypedArray コンストラクターが見えるわけではありません。代わりに、さまざまなグローバル プロパティがあり、それらの値は後述するように特定の要素の型における型付き配列のコンストラクターになります。下記のページで、それぞれの要素を持つ片引き配列で使用できる共通のプロパティやメソッドを確認できます。
¶省く
TypedArray オブジェクト:
型 | 値の範囲 | サイズ(バイト数) | 説明 | Web IDL 型 | 同等の C 型 |
---|---|---|---|---|---|
Int8Array
| -128 ~ 127 | 1 | 8 ビット長、2 の補数方式の符号付き整数値 | byte | int8_t |
Uint8Array
| 0 ~ 255 | 1 | 8 ビット長、符号なし整数値 | octet | uint8_t |
Uint8ClampedArray
| 0 ~ 255 | 1 | 8 ビット長、符号なし整数値(切り詰め) | octet | uint8_t |
Int16Array
| -32768 ~ 32767 | 2 | 16 ビット長、2 の補数方式の符号付き整数値 | short | int16_t |
Uint16Array
| 0 ~ 65535 | 2 | 16 ビット長、符号なし整数値 | unsigned short | uint16_t |
Int32Array
| -2147483648 ~ 2147483647 | 4 | 32 ビット長、2 の補数方式の符号付き整数値 | long | int32_t |
Uint32Array
| 0 ~ 4294967295 | 4 | 32 ビット長、符号なし整数値 | unsigned long | uint32_t |
Float32Array
| 1.2×10-38 ~ 3.4×1038 | 4 | 32 ビット長 IEEE 方式 浮動小数点数(有効桁数 7 桁、例えば 1.234567) | unrestricted float | float |
Float64Array
| 5.0×10-324 ~ 1.8×10308 | 8 | 64 ビット長 IEEE 方式 浮動小数点数(有効桁数 16 桁、例えば1.23456789012345) | unrestricted double | double |
BigInt64Array
| -263 ~ 263-1 | 8 | 64 ビット長、2 の補数方式の符号付き整数値 | bigint | int64_t(signed long long) |
BigUint64Array
| 0 ~ 264-1 | 8 | 64 ビット長、符号なし整数値 | bigint | uint64_t(unsigned long long) |
このオブジェクトは直接インスタンス化することはできません。その代わりに、特定の方の配列、例えば Int8Array や BigInt64Array のインスタンスを生成することができます。
これらのオブジェクトのコンストラクターの構文はすべて共通です。
バッファーとしてだけ:
指定数分:
length | これを付加して呼び出すと、length に BYTES_PER_ELEMENT を掛けた値 のバイト数の、値 0 を持つ内部配列バッファーをメモリー内に生成します。 |
---|
TypedArrayを指定して:
typedArray | typedArray 引数で、任意の型付き配列型(Int32Array など)のオブジェクトを示す引数を渡して呼び出すと、typedArray を新たな型付き配列にコピーします。typedArray 内の各値は、新しい配列へコピーされる前に対応する型へ変換されます。新しい型付き配列オブジェクトの長さは、引数 typedArray の長さと同じです。 |
---|
object | これを付加して呼び出すと、TypedArray.from() メソッドを使用したかのように新たな型付き配列を生成します。 |
---|
buffer、 byteOffset省略可、 length省略可 | これらを付加して呼び出すと、指定した ArrayBuffer のビューになる新たな型付き配列を生成します。
引数 byteOffset および length は、型付き配列ビューで公開するメモリー範囲を指定します。両方とも省略すると、buffer のすべてを公開します。length のみ省略すると、buffer の残りの部分を公開します。 |
---|
¶省く
配列内の要素は、標準の配列の添字構文(すなわち、かぎ括弧「[ ]」を使用する表記)を使用して参照することができます。しかし、型付き配列で添字付きプロパティで取得または設定するときは、範囲外の添字でもプロパティのプロトタイプ チェーンを探索しません。添字付きプロパティは ArrayBuffer を調べるのであり、オブジェクトのプロパティは探索しません。他のオブジェクト同様に、名前付きプロパティは使用できます。
// 標準的な配列構文を使用して設定および取得 var int16 = new Int16Array(2); int16[0] = 42; D=int16[0]; //=42 // 名前付きプロパティが許可されています。でも(Fx 30) Int8Array.prototype.foo = 'bar'; D=(new Int8Array(32)).foo; //="bar"
// プロトタイプで添字付き配列を使用しても探索しない(Fx 25) Int8Array.prototype[20] = 'foo'; D=(new Int8Array(32))[20]; //=0 // 圏外でも Int8Array.prototype[20] = 'foo'; D=(new Int8Array(8))[20]; //=undefined // または負の整数の添え字 Int8Array.prototype[-1] = 'foo'; D=(new Int8Array(8))[-1]; //=undefined
A=new Int8Array(); A[3]=10; D=A; //=。なにもない[object] D=A[3]; //=undefined
A=new Int8Array(5); D=A; //=[0, 0, 0, 0, 0] A[3]=10; D=A; //=[0, 0, 0, 10, 0] D=A[3]; //=10 A[3]=300; D=A[3]; //=44。300→12c(16進)、2c→44(10進)
A=new Int8Array(4); A16=new Int16Array(A); A16[2]=300; D=A16; //=[0, 0, 300, 0] A=new Int8Array(4); A[2]=10; A16=new Int16Array(A); D=A16; //=[0, 0, 10, 0] A16[2]=300; D=A16; //=[0, 0, 300, 0]
A=new Int8Array([10,20,30,40]); D=A; //=[10, 20, 30, 40]
A=[10, 20, 30, 40]; A16=new Int16Array(A, 1); D=A16; //=[10, 20, 30, 40]。¶意味あるのだろうか A16[0]=300; D=A16; //=[300, 20, 30, 40]
A=new ArrayBuffer(4); A16=new Int16Array(A, 1); //エラー発生。new TypedArray(buffer[, byteOffset[, length]]) 構文ではないのだろうか? D=A16;
A=new Array(4); A[0]=10; A16=new Int16Array(A,1); D=A16; //=[10, 0, 0, 0]