2014-02-25 36 views
6

用字面數據填充javascript類型數組的最佳方式是什麼?填充javascript類型數組的最佳方法?

最近我一直在使用JavaScript類型的數組進行一些數學工作。特別是,我使用了大量的Float32Array對象。

我經常需要手動填充它們的值。使用常規數組,可以使用以下文字語法:var a = [0,1,2];但似乎沒有填充類型數組的等效方法,所以我發現我必須用很多單獨的語句來完成;

var a = new Float32Array(3); 
a[0] = 0; 
a[1] = 1; 
a[2] = 2; 

如果超過大約4個值,這會變得非常煩人。從腳本大小和JavaScript執行的角度來看,這似乎也是浪費,因爲它必須解釋所有這些單獨的語句。

另一種方法我用正在創建一個setter函數:

var populateArray(a,vals) { 
    var N = vals.length; 
    for (var i=0; i<N; i++) {a[i]=vals[i];} 
}; 
var a = new Float32Array(3); 
populateArray(a,[0,1,2]); 

但這似乎相當浪費了。我必須首先創建一個與類型化數組一樣大的常規數組,然後將其饋入populateArray函數,然後進行迭代。

所以...問題是:是否有一種更直接和有效的方式來填充字面數據的類型化數組?

回答

5

爲什麼不能簡單地做new Float32Array([1,2,3]);

看那constructor overloads

Float32Array Float32Array( 無符號長長度 );

Float32Array Float32Array( TypedArray array );

Float32Array Float32Array( sequence array );

Float32Array Float32Array( ArrayBuffer緩衝器, 可選無符號長byteOffset, 可選無符號長長度 );

+4

或者,如果該數組已被聲明,也可以使用a.set([1,2,3]) – roberto

+0

哇 - 我不知道你能做到這一點!令人難以置信的簡單。我不敢相信我以前沒有見過。非常感謝! –

+0

@DanielHoward Np。有時比你想象的要容易;) – Johan

相關問題