【JSリファレンス】new Float32Array( )

更新日:2024/06/14

Float32Arrayコンストラクターは、ArrayBufferまたはSharedArrayBufferを32ビットで区切り、浮動小数点型の値として配列形式で参照可能なビューオブジェクトを生成します。

具体的には、一部の動作を除いて、新しいArrayBufferを生成して、Float32Arrayコンストラクターのインスタンス(Float32Arrayオブジェクト)に関連付けます。

引数の型により、ArrayBufferの生成方法が変化します。

 

■構文1

new Float32Array( )

0バイトのArrayBufferを生成します。

 

■構文1の使用例

const typedArray = new Float32Array();
console.log( typedArray ); // []

 

■構文2

new Float32Array( length )

lengthはオブジェクトでない値です。
数値に変換され要素数として扱われます。
要素数と要素サイズ(Float32Array.BYTES_PER_ELEMENT)から必要なバイト数を計算してArrayBufferを生成し、0で初期化します。

 

■構文2の使用例

const typedArray = new Float32Array(3);
console.log( typedArray ); // [ 0, 0, 0 ]

 

■構文3

new Float32Array( TypedArray )

TypedArrayには、TypedArrayオブジェクトを指定します。
ただし、BigInt64ArrayBigUint64Arrayは指定できません。指定するとTypeErrorです。

要素を格納するために必要なバイト数を計算してArrayBufferを生成し、型や符号、ビット数変換を行いながらコピーします。

 

■構文3の使用例

const typedArray = new Float32Array(
      new Float32Array([5.3,10.6,7.1])
    );
console.log( typedArray ); 
// [
//  5.300000190734863,
//  10.600000381469727,
//  7.099999904632568
// ]

 

■構文4

new Float32Array( Iterator ) new Float32Array( arrayLike )

Iteratorには、イテラブルなオブジェクト(配列を含む)を指定します。
arrayLikeには、アレイライクオブジェクトを指定します。

要素を格納するために必要なバイト数を計算してArrayBufferを生成して、値をセットします。

IteratorおよびarrayLikeから取得する値は、BigInt型およびシンボル型以外である必要があります。BigInt型およびシンボル型を指定するとTypeErrorです。
また数値化できない値や、欠番インデックスは NaN がセットされます。

 

■構文4の使用例

const typedArray = new Float32Array([100,,300]);
const typedArray2 = new Float32Array(
      {0:100.5,1:"abc",2:300,length:3}
    );

console.log( typedArray ); // [ 100, NaN, 300 ]
console.log( typedArray2 ); // [ 100.5, NaN, 300 ]

 

■構文5

new Float32Array( buffer [ , byteOffset [ , length ] ] )

※この形式で生成したインスタンスは、新しいArrayBufferを生成しません。

bufferArrayBufferまたはSharedArrayBufferです。
bufferbyteOffsetバイトから、length × 要素サイズ の範囲が、関連付けられます。

byteOffsetが要素サイズの倍数である必要があります。
倍数でない、または、関連付ける範囲がbufferの範囲外のときはRangeErrorです。

またインスタンスの一部のプロパティが、特定の値を返すように設定されます。

プロパティ名返す値
byteOffset引数byteOffset
byteLength引数length
length引数length

 

■構文5の使用例

const elementSize = Float32Array.BYTES_PER_ELEMENT;
const buffer = new ArrayBuffer(elementSize*5);

const typedArray = new Float32Array(buffer,0,3);
const typedArray2 = new Float32Array(buffer, elementSize * 2 ,3);

typedArray[2] = 100.5;

console.log( typedArray ); // [ 0, 0, 100.5 ]
console.log( typedArray2 ); // [ 100.5, 0, 0 ]

 

関連ページ

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。