/

類型化數組

類型化數組

了解什麼是類型化數組以及如何使用它們

JavaScript提供了8種類型化數組類型:

  • Int8Array:8位有符號整數數組
  • Int16Array:16位有符號整數數組
  • Int32Array:32位有符號整數數組
  • Uint8Array:8位無符號整數數組
  • Uint16Array:16位無符號整數數組
  • Uint32Array:32位無符號整數數組
  • Float32Array:32位浮點數數組
  • Float64Array:64位浮點數數組

它們都是ArrayBufferView實例。

類型化數組本質上是對ArrayBuffer的一個視圖,其中每個項目的大小和類型相同。

DataView是對ArrayBuffer的另一種視圖,但在這種情況下,數組中的項目可以具有不同的大小和類型。

以下是創建一個8位有符號整數數組的示例:

1
const a = new Int8Array()

您可以預先分配n個字節:

1
2
const bytes = 1024
const a = new Int8Array(bytes)

主要用途是允許查看ArrayBuffer的內容,因為ArrayBuffer本身是不透明的(我們無法查看其內容)。

下面是如何進行查看:

1
2
//我們有這個`buffer` ArrayBuffer
const a = new Int8Array(buffer)

這些類型化數組類似於數組,因此現在我們可以通過常用的數組訪問技術來查看緩衝區的內容,並且我們可以訪問許多方法和屬性,包括map()reduce()等。

類型化數組的主要用例是與WebGLWeb AudioCanvas API一起使用。一些WebGL函數期望使用類型化數組,因為它們比常規JavaScript數組更高效。

需要記住的一點是,類型化數組無法控制字節順序:它使用平台的字節順序。一般來說,這樣做是沒問題的,因為正如我們所說,主要用例是在本地使用數組,使用多媒體API之一。另外,大多數消費型計算機使用小端序(Intel使用該約定)。但是,如果您將類型化數組的數據轉移到使用大端序的系統上,則數據可能編碼錯誤,因此無效。

如果需要對字節順序進行這種控制,請改用DataView

tags: [“Typed Arrays”, “ArrayBuffer”, “JavaScript API”]