JavaScript <その他リファレンス メモ> 言語 等CSSHTMLJavaScriptPython ライブラリ・プラットフォームjQuerymicro:bitXamarin ドキュメンテーションDoxygenJSDocMarkdownSHFBXML ドキュメント コメント その他各種資料 子サイト簡易リファレンス・Tips サポート寄付 ~Array【型指定配列ビュー (%TypedArray%)】 コンストラクタ・配列生成 new %TypedArray%【コンストラクタ】from【配列生成 (オブジェクト指定)】of【配列生成 (要素指定)】new %TypedArray%【コンストラクタ】メモ概要ArrayBuffer【バイナリデータ配列】のビューを作成 実装は、%TypedArray%【型指定配列ビュー】参照 構文 (5) で同一の実体 (ArrayBuffer【バイナリデータ配列】) を指定すると、複数のビューから参照可 既存の %TypedArray%【型指定配列ビュー】の bufferプロパティを指定しても同様 関連filter【抽出生成】 from【オブジェクトから配列生成】 map【配列変換生成】 of【配列生成】 外部リンクECMA-262 (英語) The TypedArray ConstructorsES2024 (15) ES2023 (14) ES2022 (13) 構文 (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%【型指定配列ビュー】オブジェクト を生成 元のオブジェクトは変更なし マッピング関数を指定して、要素値の変換が可能 関連new %TypedArray%【コンストラクタ】 filter【抽出生成】 map【配列変換生成】 of【配列生成】 外部リンクECMA-262 (英語) %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )ES2024 (15) ES2023 (14) ES2022 (13) 構文 %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%【型指定配列ビュー】オブジェクト を生成 関連new %TypedArray%【コンストラクタ】 filter【抽出生成】 from【オブジェクトから配列生成】 map【配列変換生成】 外部リンクECMA-262 (英語) %TypedArray%.of ( ...items )ES2024 (15) ES2023 (14) ES2022 (13) 構文 %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), (省略) ]