2017-03-03 78 views
2

我正在將C++程序翻譯成JavaScript。陣列的默認初始化

在C++中,當創建一個類型爲float/double的動態數組時,其條目默認初始化爲0.0;我不必顯式初始化條目。因此,大小爲3的一維向量看起來像(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提供可比的功能? 如果沒有,我會明確地初始化:

E.G, 代碼:

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

否則,會有人在這裏建議初始化1-d和2-d陣列爲0.0最快的方法?

+0

閱讀了關於'undefined'。 –

+1

請注意,如果您使用類型化數組,則將其初始化爲0;例如,在你的控制檯中嘗試'新的Float32Array(9)'。 – Ryan

回答

4

使用ES6,您可以使用Array#fill

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。如果您是在速度之後避免使用apply和map。它們非常緩慢,在這種情況下使用了兩倍的內存(apply創建一個數組,然後僅用於提供迭代器以通過映射創建第二個數組)。對於(var i = 0; i <3; i ++)array [i] = 0;''''var array = [];並且不必爲每個項目創建一個新的棧上下文數組用於像map這樣的任何回調函數。 – Blindman67