JavaScript 型別化陣列參考
JavaScript 型別化陣列
在 Javascript 中,型別化陣列是二進位制資料的類陣列緩衝區。
沒有名為 TypedArray 的 JavaScript 屬性或物件,但屬性和方法可以與型別化陣列物件一起使用
型別化陣列物件
物件 | 資料型別 | 範圍 | 試一試 |
---|---|---|---|
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)不支援型別化陣列。
型別化陣列是用於在記憶體中儲存二進位制資料的類陣列物件。
型別化陣列方法和屬性
方法/屬性 | 描述 | 試一試 |
---|---|---|
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;
瀏覽器支援
typedArray
是 ECMAScript6 (ES6) 特性。
自 2017 年 6 月起,所有現代瀏覽器都支援 ES6 (JavaScript 2015)
Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
2016 年 5 月 | 2017 年 4 月 | 2017 年 6 月 | 2016 年 9 月 | 2016 年 6 月 |
Internet Explorer 不支援 typedArray
。