填充javascript类型数组的最佳方法?

Dan*_*ard 6 javascript literals typed-arrays

使用文字数据填充javascript类型数组的最佳方法是什么?

最近我一直在使用javascript类型数组进行一些数学工作.特别是,我使用了很多Float32Array对象.

我经常需要手动填充它们的值.使用常规数组,可以使用以下文字语法:var a = [0,1,2];但似乎没有相同的方法来填充类型化数组,因此我发现我必须使用大量单独的语句;

var a = new Float32Array(3);
a[0] = 0;
a[1] = 1;
a[2] = 2;
Run Code Online (Sandbox Code Playgroud)

如果超过大约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]);
Run Code Online (Sandbox Code Playgroud)

但这似乎也很浪费.我必须先创建一个与输入数组一样大的常规数组,然后输入populateArray函数,然后进行迭代.

所以......问题是:是否有更直接有效的方法用文字数据填充类型数组?

Joh*_*han 5

为什么不简单呢 new Float32Array([1,2,3]);

看一下构造函数重载:

Float32Array Float32Array(无符号长长度);

Float32Array Float32Array(TypedArray数组);

Float32Array Float32Array(序列数组);

Float32Array Float32Array(ArrayBuffer缓冲区,可选的unsigned long byteOffset,可选的unsigned long length);

  • 或者,如果数组已经声明,也可以使用a.set([1,2,3]) (4认同)