了解什麼是類型化數組以及如何使用它們
JavaScript提供了8種類型化數組類型:
Int8Array:8位有符號整數數組Int16Array:16位有符號整數數組Int32Array:32位有符號整數數組Uint8Array:8位無符號整數數組Uint16Array:16位無符號整數數組Uint32Array:32位無符號整數數組Float32Array:32位浮點數數組Float64Array:64位浮點數數組
它們都是ArrayBufferView實例。
類型化數組本質上是對ArrayBuffer的一個視圖,其中每個項目的大小和類型相同。
DataView是對ArrayBuffer的另一種視圖,但在這種情況下,數組中的項目可以具有不同的大小和類型。
以下是創建一個8位有符號整數數組的示例:
const a = new Int8Array()
您可以預先分配n個字節:
const bytes = 1024
const a = new Int8Array(bytes)
主要用途是允許查看ArrayBuffer的內容,因為ArrayBuffer本身是不透明的(我們無法查看其內容)。
下面是如何進行查看:
//我們有這個`buffer` ArrayBuffer
const a = new Int8Array(buffer)
這些類型化數組類似於數組,因此現在我們可以通過常用的數組訪問技術來查看緩衝區的內容,並且我們可以訪問許多方法和屬性,包括map()、reduce()等。
類型化數組的主要用例是與WebGL、Web Audio或Canvas API一起使用。一些WebGL函數期望使用類型化數組,因為它們比常規JavaScript數組更高效。
需要記住的一點是,類型化數組無法控制字節順序:它使用平台的字節順序。一般來說,這樣做是沒問題的,因為正如我們所說,主要用例是在本地使用數組,使用多媒體API之一。另外,大多數消費型計算機使用小端序(Intel使用該約定)。但是,如果您將類型化數組的數據轉移到使用大端序的系統上,則數據可能編碼錯誤,因此無效。
如果需要對字節順序進行這種控制,請改用DataView。