最佳方法来填充JavaScript中的类型化数组?

9
什么是使用实际数据填充JavaScript类型化数组的最佳方法?
最近我一直在为数学工作使用 JavaScript 类型化数组。特别是,我正在使用大量的 Float32Array 对象。
我经常需要手动填充它们的值。对于常规数组,有以下文字语法可用:var a = [0,1,2]; 但好像没有类似的方式可以填充类型化数组,所以我发现必须使用许多单独的语句来完成它。
var a = new Float32Array(3);
a[0] = 0;
a[1] = 1;
a[2] = 2;

如果有超过四个值,这将变得非常烦人。而且这种方式似乎很浪费,无论是在脚本大小还是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函数,还需要进行迭代。

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

1个回答

6

为什么不直接使用new Float32Array([1,2,3]);

看看构造函数重载

Float32Array Float32Array( unsigned long length );

Float32Array Float32Array( TypedArray array );

Float32Array Float32Array( sequence array );

Float32Array Float32Array( ArrayBuffer buffer, optional unsigned long byteOffset, optional unsigned long length );


4
如果数组已经声明,也可以使用 a.set([1,2,3])。 - roberto
哇 - 我不知道你可以这样做!难以置信的简单。我简直不敢相信我以前没见过这个。非常感谢! - Daniel Howard
@DanielHoward 没问题。有时候比你想象的要容易;) - Johan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接