2017-03-03 15 views
2

私はC++プログラムをJavaScriptに翻訳しています。配列のデフォルト初期化

C++では、float/double型の動的配列を作成すると、そのエントリはデフォルトで0.0に初期化されます。私は明示的にエントリを初期化する必要はありません。

したがって、サイズ3の1次元ベクトルは(0.0 0.0 0.0)Tのように見えます。ここで、Tはベクトルの転置を示します。

3×3行列はそれは私に数行のコードを保存し、プログラムをスピードアップ

[0.0 0.0 0.0; 
0.0 0.0 0.0; 
0.0 0.0 0.0] 

に初期化される(すでに行われていたものを繰り返すことはないで。)

んJavaScriptが同等の機能を提供しますか? ない場合、私は明示的に初期化されます:

例えば、 コード:

for (int i = 0; i < N; ++i) v[i] = 0.0; 

をそれ以外の場合は、ここで誰かが0.0に1-Dおよび2-Dの配列を初期化する最速の方法を提案することができますか?

+0

。 –

+1

型付き配列を使用する場合は、0に初期化されます。あなたのコンソールで 'new Float32Array(9)'を試してみてください。 – Ryan

答えて

4

ES6では、Array#fillを使用できます。 undefined` `をよく読んで

var array = Array(3).fill(0); 
//    ^   size of the array 
//      ^ value of element 

ES5

var array = Array.apply(null, { length: 3 }).map(function() { return 0; }); 
//         ^         length 
//                 ^ value 
+0

OPに。あなたがスピードの後であれば、適用とマップの使用を避けてください。これらは極端に遅く、この場合はメモリを2倍使用します(applyは配列を作成し、mapを介して2番目の配列を作成するイテレータを提供するためにのみ使用されます)。 forループは、(var i = 0; i <3; i ++)array [i] = 0; 'のための' var array = [];のほうがはるかに速く、その中の各項目に対して新しいスタックコンテキストを作成する必要はありません。 mapのようなコールバック関数の配列。 – Blindman67