如何用另一种数组类型读取类型化数组

How to read typed array with another arrays type

我在一个函数中,array1array2 是类型化数组的参数,其中任何一个:Uint32ArrayInt32ArrayFloat64ArrayUint8Array
在此函数中,如何将 array1 原始数据转换为等于 array2 type
的类型化数组 像这样:

function readArray(array1, array2)
{
    var a = new array2Type(array1.buffer);
    //rest of the code where "a" is used
} 

array2Type 不是有效代码,正确的转换方法是什么?

您可以根据源创建一个新的类型化数组视图:

var dstArray = new window[srcArray.constructor.name](srcArray.buffer);

在函数中实现:

function readArray(array1, array2) {
  var a = new window[array2.constructor.name](array1.buffer);
  console.log(a.constructor.name);
}

var a1 = new Uint32Array(1);
var a2 = new Float32Array(1);
readArray(a1, a2); //Should log Float32Array

但是您需要添加一些清理,例如 Uint32Array 至少需要四个字节,如果您传入长度为 1 Uint16Array 它将失败,因为只有两个字节。等等。