我对Javascript Typed Arrays有点困惑。
我有几个Float32Array,没有concat方法。我不知道他们提前多少,顺便说一句。
我想将它们全部串联在另一个Float32Array中,但是:
就像我之前说的
var length_now = buffer.length;
for (var i = 0; i < event.frameBuffer.length; i += 1) {
buffer [length_now + i] = event.frameBuffer[i];
}
我发现的唯一解决方案是将Float32Array复制到常规数组中,这绝对不是我想要的。你会怎么做,stackoverflowers?
最佳答案
类型化的数组基于array buffers,无法动态调整其大小,因此无法在数组末尾写入或使用push()
。
实现所需目标的一种方法是分配一个新的Float32Array
,其大小足以容纳两个数组,并执行优化的副本:
function Float32Concat(first, second)
{
var firstLength = first.length,
result = new Float32Array(firstLength + second.length);
result.set(first);
result.set(second, firstLength);
return result;
}
那将允许您编写:
buffer = Float32Concat(buffer, event.frameBuffer);