JavaScript:如何分离U8IntArray?

Tre*_*eam 1 javascript arrays jquery

我有一个20字节的U8IntArray,我想把它分成两部分(前8个字节和9到20字节):

var arr = new Uint8Array( 20 );
var part1 = arr.slice( 0, 8 );
var part2 = arr.slice( 8 );

console.info( part1, part2 );
Run Code Online (Sandbox Code Playgroud)

适用于FireFox,但在Chrome和Internet Explorer中失败:

TypeError:undefined不是函数*

是否有一种简单的方法来切割Uint8Array,它可以在所有浏览器中使用?

Ori*_*iol 5

问题是Typed Arrays最初是由Typed Array Specification定义的,它没有sliceTypedArray接口中定义任何方法.

现在,Typed Arrays是ECMAScript 6的一部分,但Internet Exporer并不完全支持它.

因此,仅使用旧规范中定义的方法会更安全.在这种情况下,TypedArray.prototype.subarray应该从IE10开始工作.

var arr = new Uint8Array( 20 );
var part1 = arr.subarray( 0, 8 );
var part2 = arr.subarray( 8 );
console.info( part1, part2 );
Run Code Online (Sandbox Code Playgroud)

另一种选择是slice在缓冲区上使用,而不是直接在阵列上使用,自IE11起支持.

var arr = new Uint8Array( 20 );
var part1 = new Uint8Array( arr.buffer.slice( 0, 8 ) );
var part2 = new Uint8Array( arr.buffer.slice( 8 ) );
console.info( part1, part2 );
Run Code Online (Sandbox Code Playgroud)