【JSリファレンス】new BigInt64Array( )
更新日:2024/06/14
BigInt64Arrayコンストラクターは、ArrayBufferまたはSharedArrayBuffer64ビットで区切り、符号ありのBigInt型の値として配列形式で参照可能なビューオブジェクトを生成します。
具体的には、一部の動作を除いて、新しいArrayBufferを生成して、BigInt64Arrayコンストラクターのインスタンス(BigInt64Arrayオブジェクト)に関連付けます。
引数の型により、ArrayBufferの生成方法が変化します。
■構文1
new BigInt64Array( )
0バイトのArrayBufferを生成します。
■構文1の使用例
const typedArray = new BigInt64Array();
console.log( typedArray ); // []
■構文2
new BigInt64Array( length )
lengthはオブジェクトでない値です。
数値に変換され要素数として扱われます。
要素数と要素サイズ(BigInt64Array.BYTES_PER_ELEMENT)から必要なバイト数を計算してArrayBufferを生成し、0で初期化します。
■構文2の使用例
const typedArray = new BigInt64Array(3);
console.log( typedArray ); // [ 0n, 0n, 0n ]
■構文3
new BigInt64Array( TypedArray )
TypedArrayには、BigInt64Array、BigUint64Arrayを指定します。
他のTypedArrayオブジェクトを指定すると、TypeErrorです。
要素を格納するために必要なバイト数を計算してArrayBufferを生成し、符号変換を行いながらコピーします。
■構文3の使用例
const typedArray = new BigInt64Array(3);
const typedArray2 = new BigInt64Array(typedArray);
typedArray[1] = 100n;
// typedArray変更してもtypedArray2に影響なし
console.log( typedArray ); // [ 0n, 100n, 0n ]
console.log( typedArray2 ); // [ 0n, 0n, 0n ]
■構文4
new BigInt64Array( Iterator ) new BigInt64Array( arrayLike )
Iteratorには、イテラブルなオブジェクト(配列を含む)を指定します。
arrayLikeには、アレイライクオブジェクトを指定します。
要素を格納するために必要なバイト数を計算してArrayBufferを生成して、値をセットします。
IteratorおよびarrayLikeから取得する値は、BigInt型である必要があります。
BigInt型でない、または欠番インデックスはTypeErrorです。
■構文4の使用例
const typedArray = new BigInt64Array([100n,200n,300n]);
const typedArray2 = new BigInt64Array({0:100n,1:200n,2:300n,length:3});
console.log( typedArray ); // [ 100n, 200n, 300n ]
console.log( typedArray2 ); // [ 100n, 200n, 300n ]
■構文5
new BigInt64Array( buffer [ , byteOffset [ , length ] ] )
※この形式で生成したインスタンスは、新しいArrayBufferを生成しません。
bufferはArrayBufferまたはSharedArrayBufferです。
bufferのbyteOffsetバイトから、length × 要素サイズ の範囲が、関連付けられます。
byteOffsetが要素サイズ(値は8)の倍数でない場合、または、関連付ける範囲が実際の範囲外のときはRangeErrorです。
またインスタンスの一部のプロパティが、特定の値を返すように設定されます。
プロパティ名 | 返す値 |
---|---|
byteOffset | 引数byteOffset |
byteLength | 引数length |
length | 引数length |
■構文5の使用例
const elementSize = BigInt64Array.BYTES_PER_ELEMENT;
const buffer = new ArrayBuffer(elementSize*5);
const typedArray = new BigInt64Array(buffer,0,3);
const typedArray2 = new BigInt64Array(buffer, elementSize * 2 ,3);
typedArray[2] = 100n;
console.log( typedArray ); // [ 0n, 0n, 100n ]
console.log( typedArray2 ); // [ 100n, 0n, 0n ]
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。