new %TypedArray%【コンストラクタ】
from【配列生成 (オブジェクト指定)】
of【配列生成 (要素指定)】

new %TypedArray%【コンストラクタ】

メモ

概要

関連

外部リンク

構文

(1) 要素なし
new %TypedArray%( )

TypeError  new なし
(2) 要素数指定
new %TypedArray%( length )

length 要素数
TypeError  new なし
(3) ビュー指定 (コピー)
new %TypedArray%( typedArray )

typedArray 任意の ~Array【型指定配列ビュー (%TypedArray%)】オブジェクト
TypeError  new なし
(4) オブジェクト指定
new %TypedArray%( object )

object 配列オブジェクト・反復オブジェクト 等
TypeError  new なし
(5) 実体指定
new %TypedArray%( buffer [ , byteOffset [ , length ] ] )

buffer ArrayBuffer【バイナリデータ配列】
byteOffset バイト単位オフセット (省略:0 先頭)
length 要素数 (省略:末尾まで)

TypeError  new なし
RangeError  指定範囲がbufferの領域外
byteOffset < 0
byteOffset がデータサイズの倍数以外
lengthの省略時、bufferに指定された ArrayBuffer【バイナリデータ配列】のサイズがデータサイズの倍数以外
lengthの省略時、byteOffsetが ArrayBuffer【バイナリデータ配列】のサイズ以上
lengthが指定され、byteOffsetから length数分の配列が ArrayBuffer【バイナリデータ配列】のサイズより大きい

// 構文 (1)
var typedArray_1 = new Int32Array();
console.log(typedArray_1.length);
// 出力:0
console.log(typedArray_1);
// 出力:[]
// 構文 (2)
var typedArray_2 = new Int32Array(5);
console.log(typedArray_2.length);
// 出力:5
console.log(typedArray_2);
// 出力:[0, 0, 0, 0, 0]
// 構文 (3)
var typedArray_30 = new Int32Array([ 1, 2, 3 ]);
var typedArray_31 = new Int32Array(typedArray_30);
console.log(typedArray_30 === typedArray_31);
// 出力:false 別のビュー
console.log(typedArray_30.buffer === typedArray_31.buffer);
// 出力:false 別の実体 (コピー)
typedArray_30[0] = 10;
console.log(typedArray_30);
// 出力:[10, 2, 3]
console.log(typedArray_31);
// 出力:[1, 2, 3] 
// 構文 (4)
var array = [ 1, 2, 3 ];
var typedArray_4 = new Int32Array(array);
console.log(typedArray_4.length);
// 出力:3
console.log(typedArray_4);
// 出力:[1, 2, 3]
// 構文 (5-1)
var arrayBuffer = new ArrayBuffer(4 * 3);
var typedArray_50 = new Int32Array(arrayBuffer);
var typedArray_51 = new Int32Array(arrayBuffer);
console.log(typedArray_50 === typedArray_51);
// 出力:false 別のビュー
console.log(typedArray_50.buffer === typedArray_51.buffer);
// 出力:true 同一実体
typedArray_50[0] = 10;
console.log(typedArray_50);
// 出力:[10, 0, 0]
console.log(typedArray_51);
// 出力:[10, 0, 0]
// 構文 (5-2)
var typedArray_52 = new Int32Array([ 1, 2, 3 ]);
console.log(typedArray_52.BYTES_PER_ELEMENT);
// 出力:4
// ビューの実体を指定
var typedArray_53 = new Int32Array(typedArray_52.buffer, typedArray_52.BYTES_PER_ELEMENT, 2);
console.log(typedArray_53);
// 出力:[2, 3]
console.log(typedArray_52 === typedArray_53);
// 出力:false 別のビュー
console.log(typedArray_52.buffer === typedArray_53.buffer);
// 出力:true 同一実体
typedArray_53[0] = 20;
console.log(typedArray_53);
// 出力:[20, 3]
console.log(typedArray_52);
// 出力:[1, 20, 3]

%TypedArray%.from【配列生成 (オブジェクト指定)】

メモ

概要

  • 配列形式オブジェクト・イテラブル オブジェクト から %TypedArray%【型指定配列ビュー】オブジェクト を生成
    • 元のオブジェクトは変更なし
    • マッピング関数を指定して、要素値の変換が可能

関連

外部リンク

構文

%TypedArray%.from( items[, mapfn[, thisArg]] ) 

%TypedArray%【型指定配列ビュー】オブジェクト
items元になるオブジェクト (下記のオブジェクトが有効)
配列形式オブジェクト (関数のarguments【引数リスト】 等)
イテラブル オブジェクト (%TypedArray%【型指定配列ビュー】・Map【マップ】 等)
mapfnマッピング関数 (詳細は下記参照)
thisArgマッピング関数内で this で参照されるオブジェクト

TypeError 例外
itemsが不正
mapfnが呼び出し不可
マッピング関数 引数名 (例)備考
value要素値
index要素インデックス
戻り値型備考
該当型新しい配列の要素値

function funcMap(value, index) {
  return index * 100 + value;
}

function funcMap2(value, index) {
  return this + index * 100 + value;
}

function funcArguments(p1, p2, p3) {
  return Int32Array.from(arguments);
}

// Array【配列】
const array = [ 1, 2, 3, 4, 5 ];
let typedArray = Int32Array.from(array);
console.log(typedArray);
// 出力:Int32Array(5) [1, 2, 3, 4, 5, (省略) ]

typedArray = Int32Array.from(array, funcMap);
console.log(typedArray);
// 出力:Int32Array(5) [1, 102, 203, 304, 405, (省略) ]

typedArray = Int32Array.from(array, funcMap2, 10000);
console.log(typedArray);
// 出力:Int32Array(5) [10001, 10102, 10203, 10304, 10405, (省略) ]


// 配列形式
const arrayLike = { 0: 1, 1: 3, 2: 5, length: 3 };
typedArray = Int32Array.from(arrayLike);
console.log(typedArray);
// 出力:Int32Array(3) [1, 3, 5, (省略) ]

typedArray = Int32Array.from(arrayLike, funcMap);
console.log(typedArray);
// 出力:Int32Array(3) [1, 103, 205, (省略) ]

typedArray = Int32Array.from(arrayLike, funcMap2, 10000);
console.log(typedArray);
// 出力:Int32Array(3) [10001, 10103, 10205, (省略) ]


// 文字列
typedArray = Int32Array.from('2468');
console.log(typedArray);
// 出力:Int32Array(4) [2, 4, 6, 8, (省略) ]


// 関数のarguments【引数リスト】
typedArray = funcArguments(100, 200, 300);
console.log(typedArray);
// 出力:Int32Array(3) [100, 200, 300, (省略) ]

%TypedArray%.of【配列生成 (要素指定)】

メモ

概要

  • 要素を指定して%TypedArray%【型指定配列ビュー】オブジェクト を生成

関連

外部リンク

構文

%TypedArray%.of( ...items ) 

%TypedArray%【型指定配列ビュー】オブジェクト
items要素値

let typedArray = Int32Array.of(1, 2, 3);
console.log(typedArray);
// 出力:Int32Array(3) [1, 2, 3, (省略) ]

typedArray = Int32Array.of(3);
console.log(typedArray);
// 出力:Int32Array [3, (省略) ]
typedArray = new Int32Array(3);  // 参考
console.log(typedArray);
// 出力:Int32Array(3) [0, 0, 0, (省略) ]

typedArray = Int32Array.of();
console.log(typedArray);
// 出力:Int32Array [buffer: ArrayBuffer(0), (省略) ]