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,它可以在所有浏览器中使用?
问题是Typed Arrays最初是由Typed Array Specification定义的,它没有slice在TypedArray接口中定义任何方法.
现在,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)