截取TypedArray方法

883 阅读1分钟
方法一:TypedArray slice([begin[, end]])
优点:没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题
缺点:不支持IE

var u8 = new Uint8Array([1,2,4,6]);
var u8New = u8.slice(0, 3);
console.log(u8New); // Uint8Array(3) [1, 2, 4]
console.log(u8New.buffer); // ArrayBuffer(3) {}
方法二:New TypedArray(typedArray.buffer[, byteOffset [, length]])
优点:支持IE
缺点:截取出来的typedArray.buffer还是原始的ArrayBuffer

var u8 = new Uint8Array([1,2,4,6]);
var u8New = new Uint8Array(u8.buffer, 1, 3);
console.log(u8New); // Uint8Array(3) [2, 4, 6]
console.log(u8New.buffer); // ArrayBuffer(4) {}
方法三:typedarray.set(typedarray[, offset])
优点:支持IE;没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题

var u8 = new Uint8Array([1,2,4,6]);
var u8Temp = new Uint8Array(u8.buffer, 0, 3);
var u8New = new Uint8Array(u8Temp.byteLength);
u8New.set(u8Temp);
console.log(u8New);  // Uint8Array(3) [1, 2, 4]
console.log(u8New.buffer); // ArrayBuffer(3) {}
方法四:New TypedArray(typedArray.buffer)
优点:支持IE;没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题
备注:推荐使用该方法

var u8 = new Uint8Array([1,2,4,6]);
var u8New = new Uint8Array(u8.buffer.slice(1, 3));
console.log(u8New); // Uint8Array(2) [2, 4]
console.log(u8New.buffer); // ArrayBuffer(2) {}