我有一个 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 );
在 FireFox 中工作,但在 Chrome 和 Internet-Explorer 中失败:
TypeError: undefined is not a function*
是否有一种简单的方法来对 Uint8Array 进行切片,该方法适用于所有浏览器?
最佳答案
问题是类型化数组最初是由 Typed Array Specification 定义的,它没有在 TypedArray
接口(interface)中定义任何 slice
方法。
现在类型化数组是 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 );
另一种选择是使用 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 );
关于JavaScript:如何分离 U8IntArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131414/