JS中TypedArray的map方法

JS中TypedArray的map方法

项目中遇到Int16Array经过转换得到常规Array的场景,最初尝试使用map方法转出目标数组.

// 场景: TypedArray --->  Array

测试发现Int16Array.prototype.map始终返回Int16Array,没有得到想要的Array,如下:

var a = new Int16Array([1,2,3,4]);
a.map((x,i)=>[i,x+10]) instanceof Array //false
a.map((x,i)=>[i,x+10]) instanceof Int16Array //false
//分析: TypedArray ---> map ---> TypedArray(非Array)

查看规范中对TypedArray.prototype.map的定义,确实是如此设计的。
针对项目中场景的解决方案:
方案1:TypedArray转数组后再进行map

Array.from(a).map((x,i)=>[i,x+10])

方案2: 使用Array的map而不是TypedArray的map

Array.prototype.map.call(a,(x,i)=>[i,x+10])

你可能感兴趣的:(JavaScript,杂项)