如何读取具有其他数组类型的类型化数组

时间:2017-08-19 16:15:58

标签: javascript arrays typed-arrays

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

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

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

1 个答案:

答案 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,它将失败,因为只有两个字节。等等。