Hướng dẫn tài liệu tham khảo mảng typed 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 BigUint64Array 0/264

Giải thích

Các mảng loại hóa không phải là mảng.

isArray() trên các mảng loại hóa trả về false.

Các mảng loại hóa không hỗ trợ nhiều phương pháp của mảng (như push và pop).

Các mảng loại hóa là các đối tượng giống như mảng, được sử dụng để lưu trữ dữ liệu nhị phân trong bộ nhớ.

Phương pháp và thuộc tính của Typed Array

Phương pháp / Thuộc tính Mô tả
BYTES_PER_ELEMENT Tính thuộc tính số byte cần để lưu trữ một phần tử.
fill() Lấp đầy tất cả các phần tử bằng một giá trị.
find() Trả về phần tử đầu tiên thỏa mãn điều kiện.
name Trả về tên của mảng loại hóa.
of() Tạo các mảng loại hóa từ mảng.
some() Nếu một phần tử thỏa mãn điều kiện, thì trả về true.

Uint8Array so với Uint8ClampedArray

Sự khác biệt giữa Uint8Array và Uint8ClampedArray nằm ở cách thêm giá trị.

Nếu một phần tử của Uint8ClampedArray được đặt trong khoảng từ 0 đến 255, nó sẽ mặc định là 0 hoặc 255.

Các mảng loại hóa chỉ lấy giá trị của 8 bit đầu tiên.

Lợi ích của các mảng loại hóa

Các mảng loại hóa cung cấp một phương pháp xử lý dữ liệu nhị phân, hoạt động hiệu quả như một mảng trong C.

Các mảng loại hóa là bộ nhớ nguyên thuỷ, vì vậy JavaScript có thể truyền chúng trực tiếp vào bất kỳ hàm nào mà không cần chuyển đổi dữ liệu sang dạng biểu diễn khác.

Các mảng loại hóa nhanh hơn nhiều so với các mảng thông thường, được sử dụng để truyền dữ liệu cho các hàm có thể sử dụng dữ liệu nhị phân nguyên thuỷ (trò chơi máy tính, WebGL, Canvas, API tệp, API phương tiện).

API trình duyệt hỗ trợ các mảng loại hóa

Mô hình Fetch API

fetch(url)
.then(request => request.arrayBuffer())
.then(arrayBuffer =>...);

Mô hình 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;

Hỗ trợ trình duyệt

typedArray Là tính năng của ECMAScript6 (ES6).

Tất cả các trình duyệt hiện đại đều hỗ trợ ES6 (JavaScript 2015).

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera

Internet Explorer 11 (và các phiên bản trước) không hỗ trợ typedArray.