2014-02-25 30 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

相关问题