如何将TypedArray复制到另一个TypedArray?

时间:2016-02-22 20:49:20

标签: javascript performance typedarray

C#具有高性能阵列复制功能,可以将阵列复制到位

Array.Copy(source, destination, length)

比手动操作更快,即:

for (var i = 0; i < length; i++)
    destination[i] = source[i];

我正在寻找一个等效的高性能复制功能来复制数组到位,对于Javascript中的Int32Array和Float32Array,并且找不到这样的功能:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray

最接近的是&#34; copyWithin&#34;只在数组内部进行复制。

是否有针对TypedArrays 的内置高性能复制功能

B计划,是否有内置的高性能克隆功能? (编辑:看起来像slice()就是答案)

3 个答案:

答案 0 :(得分:15)

您正在寻找.set,它允许您使用输入数组(或TypedArray)设置数组的值,可选择从目标数组上的某个偏移量开始:

destination.set(source);
destination.set(source, offset);

或者,设置有限数量的输入数组:

destination.set(source.slice(limit), offset);

如果您想要创建新的TypedArray,只需使用.slice

source.slice();

答案 1 :(得分:4)

克隆到存在的typedarray:

destination.set(source);
destination.set(source, offset);

克隆到一个新的typedarray示例:(它是最快的!)

var source = new Uint8Array([1,2,3]);
var cloned = new Uint8Array(source);

答案 2 :(得分:1)

您可以使用slice(0);克隆数组。

var clone = myArray.slice(0);

你可以把它变成一种原生方法:

Array.prototype.clone = function() {
    return this.slice(0);
};

与循环

比较的效果link