我在一个函数中,array1
和array2
它们是类型数组的参数,其中任何一个:Uint32Array
或Int32Array
或Float64Array
或Uint8Array
在此函数内部,如何将array1
原始数据转换为等于array2
类型
的类型数组
像这样的东西:
function readArray(array1, array2)
{
var a = new array2Type(array1.buffer);
//rest of the code where "a" is used
}
array2Type
不是有效的代码,进行转换的正确方法是什么?
答案 0 :(得分:1)
您可以根据执行此操作的源代码创建新的类型化数组视图:
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
,它将失败,因为只有两个字节。等等。