JavaScript 類型化數組參考手冊
JavaScript 類型化數組
在 Javascript 中,類型化數組是二進制數據的類似數組的緩沖區。
不存在名為 TypedArray 的 JavaScript 屬性或對象,但屬性和方法可以與類型化數組對象一起使用:
實例
const myArr = new Int8Array(10);
類型化數組的對象
對象 | 數據類型 | 范圍 |
---|---|---|
Int8Array | 有符號整數(字節) | -128/127 |
Uint8Array | 無符號整數(八位字節) | 0/255 |
Uint8ClampedArray | 無符號整數(八位字節) | 0/255 |
Int16Array | 短整數 | -32768/32767 |
Uint16Array | 無符號短整數 | 0/65535 |
Int32Array | 有符號長整數 | -231/231-1 |
Uint32Array | 無符號長整數 | 0/232 |
Float32Array | 浮點 - 7 位有效數字 | 1.2x10-38/3.4x1038 |
Float64Array | 雙精度浮點 - 16 位有效數字 | 5.0x10-324/1.8x10308 |
BigInt64Array | 有符號大整數 | -263/263-1 |
BigUint64Array | 無符號大整數 | 0/264 |
說明
類型化數組不是數組。
類型化數組上的 isArray() 返回 false。
類型化數組不支持許多數組方法(如 push 和 pop)。
類型化數組是類似數組的對象,用于在內存中存儲二進制數據。
Typed Array 方法和屬性
方法 / 屬性 | 描述 |
---|---|
BYTES_PER_ELEMENT | 計算用于存儲一個元素的字節數的屬性。 |
fill() | 用一個值填充所有元素。 |
find() | 返回滿足條件的第一個元素。 |
name | 返回類型化數組的名稱。 |
of() | 用數組創建類型化數組。 |
some() | 如果一個元素滿足條件,則返回 true。 |
Uint8Array 對比 Uint8ClampedArray
Uint8Array 和 Uint8ClampedArray 之間的區別在于如何添加值。
如果將 Uint8ClampedArray 中的一個元素設置為 0-255 范圍之外的值,它將默認為 0 或 255。
類型化數組將只取值的前 8 位。
類型化數組的好處
類型化數組提供了一種處理二進制數據的方法,就像在 C 中工作的數組一樣有效。
類型化數組是原始內存,因此 JavaScript 可以將它們直接傳遞給任何函數,而無需將數據轉換為另一種表示形式。
類型化數組比普通數組快得多,用于將數據傳遞給可以使用原始二進制數據的函數(計算機游戲、WebGL、Canvas、文件 API、媒體 API)。
瀏覽器 API 支持類型化數組
Fetch API 實例
fetch(url) .then(request => request.arrayBuffer()) .then(arrayBuffer =>...);
Canvas 實例
const canvas = document.getElementById('my_canvas'); const context = canvas.getContext('2d'); const imageData = context.getImageData(0, 0, canvas.width, canvas.height); const uint8ClampedArray = imageData.data;
Browser Support
typedArray 是 ECMAScript6 (ES6) 特性。
所有現代瀏覽器都支持 ES6 (JavaScript 2015)。
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Yes | Yes | Yes | Yes | Yes |
Internet Explorer 11(及更早版本)不支持 typedArray。