自我调整typearray大小的最佳实践

Best practice for self-resizing TypedArray?

本文关键字:最佳 调整 typearray 自我      更新时间:2023-09-26

我想使用类似于c++ std::vector<float>Float32Array,在那里我可以将项目推到数组的末尾,当它耗尽空间时,它会自动调整大小。

我在MDN上注意到ArrayBuffer有一个用于此目的的实验性transfer方法,这似乎是一个很好的候选者。还有什么方法可以实现自调整TypedArray的大小呢?

在谷歌上搜索完全相同的请求,我找到了这个答案:

typedarray不是array而是arraybuffer,因此是固定长度的:你不能对它们使用push():-()。

所以显然唯一的解决方案是暴力破解(见这里)。但如果你的意图是一些密集的操作(webGL,声音),你不会喜欢这样。在各种教程中,人们正在转换成Float32Array,因为他们绑定他们的缓冲区(例如,gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(this.vertexArray), gl.STATIC_DRAW);),也许它不是那么糟糕…但我同意这听起来并不理想。