JavaScript - Đối tượng TypedArray
Xin chào các bạn, những ngôi sao lập trình tương lai! ? Hôm nay, chúng ta sẽ bắt đầu một hành trình đầy.exciting vào thế giới của các đối tượng TypedArray trong JavaScript. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước từng bước. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi thoải mái, và cùng nhau lặn sâu vào!
什么是 TypedArray?
Hãy tưởng tượng bạn đang tổ chức một bữa tiệc lớn (vì ai lại không yêu thích một bữa tiệc vui vẻ phải không?). Bạn cần theo dõi số lượng chén, đĩa và dụng cụ ăn uống bạn có. Đó chính là điều mà một TypedArray làm trong JavaScript - nó giúp chúng ta tổ chức và lưu trữ các loại dữ liệu cụ thể một cách hiệu quả.
Một TypedArray là một loại mảng đặc biệt trong JavaScript chỉ có thể chứa các số của một loại cụ thể. Nó giống như việc bạn có các hộp riêng biệt cho đũa, thìa và dao thay vì bỏ chúng tất cả vào một ngăn kéo lớn.
// Tạo một TypedArray của các số nguyên 8-bit
const myArray = new Int8Array(5);
console.log(myArray); // Output: Int8Array(5) [0, 0, 0, 0, 0]
Trong ví dụ này, chúng ta đã tạo một TypedArray có thể chứa năm số nguyên 8-bit. Nó giống như việc bạn chuẩn bị năm hộp nhỏ, mỗi hộp có thể chứa một số介于 -128 và 127.
Tại sao lại sử dụng TypedArray?
Bạn có thể tự hỏi, "Tại sao lại phiền toái với TypedArrays khi chúng ta đã có các mảng thông thường?" Đó là một câu hỏi tuyệt vời! TypedArrays có một số siêu năng lực làm cho chúng trở nên hoàn hảo cho một số tình huống cụ thể:
- Tốc độ: Chúng nhanh hơn cho các phép toán số học.
- Hiệu quả bộ nhớ: Chúng sử dụng một lượng bộ nhớ cố định.
- Khả năng tương thích: Chúng hoạt động tốt với dữ liệu nhị phân và các ngôn ngữ khác.
Nó giống như việc sử dụng một công cụ chuyên dụng thay vì một dao đa năng - đôi khi, bạn cần một sự phù hợp hoàn hảo!
Các đối tượng TypedArray
JavaScript cung cấp nhiều loại TypedArrays, mỗi loại được thiết kế cho các loại số và kích thước khác nhau. Hãy cùng xem chúng trong một bảng tổ chức đẹp mắt:
TypedArray | Mô tả | Phạm vi |
---|---|---|
Int8Array | Số nguyên có dấu 8-bit | -128 đến 127 |
Uint8Array | Số nguyên không dấu 8-bit | 0 đến 255 |
Int16Array | Số nguyên có dấu 16-bit | -32,768 đến 32,767 |
Uint16Array | Số nguyên không dấu 16-bit | 0 đến 65,535 |
Int32Array | Số nguyên có dấu 32-bit | -2,147,483,648 đến 2,147,483,647 |
Uint32Array | Số nguyên không dấu 32-bit | 0 đến 4,294,967,295 |
Float32Array | Số dấu phẩy động 32-bit | Khoảng 1.2E-38 đến 3.4E+38 |
Float64Array | Số dấu phẩy động 64-bit | Khoảng 5.0E-324 đến 1.8E+308 |
Wow, đó là một danh sách khá dài! Đừng lo lắng nếu nó có vẻ quá tải - chúng ta sẽ sử dụng các ví dụ để làm rõ tất cả.
Các thuộc tính của TypedArray
TypedArrays có một số thuộc tính hữu ích. Hãy cùng khám phá chúng:
1. length
Thuộc tính này cho chúng ta biết có bao nhiêu phần tử trong TypedArray của chúng ta.
const myArray = new Int16Array(3);
console.log(myArray.length); // Output: 3
2. BYTES_PER_ELEMENT
Thuộc tính này cho chúng ta biết mỗi phần tử trong mảng chiếm bao nhiêu byte.
console.log(Int8Array.BYTES_PER_ELEMENT); // Output: 1
console.log(Int16Array.BYTES_PER_ELEMENT); // Output: 2
Nó giống như việc biết kích thước của mỗi hộp trong hệ thống lưu trữ của chúng ta!
Các phương thức tĩnh của TypedArray
TypedArrays có một số phương thức内置 mà chúng ta có thể sử dụng mà không cần tạo một thể hiện. Hãy cùng xem xét một vài phương thức:
1. TypedArray.from()
Phương thức này tạo một TypedArray mới từ một đối tượng có dạng mảng.
const regularArray = [1, 2, 3, 4];
const typedArray = Int8Array.from(regularArray);
console.log(typedArray); // Output: Int8Array(4) [1, 2, 3, 4]
Nó giống như việc chuyển đổi ngăn kéo dụng cụ hỗn hợp thành các hộp tổ chức ngăn nắp!
2. TypedArray.of()
Phương thức này tạo một TypedArray mới với một số lượng biến số của các đối số.
const myArray = Int16Array.of(1, 2, 3, 4, 5);
console.log(myArray); // Output: Int16Array(5) [1, 2, 3, 4, 5]
Nó giống như nói, "Đây là các vật phẩm, hãy tổ chức chúng cho tôi!"
Các phương thức thể hiện của TypedArray
Bây giờ, hãy xem xét một số phương thức chúng ta có thể sử dụng trên các thể hiện TypedArray của chúng ta:
1. set()
Phương thức này cho phép chúng ta sao chép các giá trị vào TypedArray của chúng ta.
const myArray = new Int8Array(5);
myArray.set([1, 2, 3]);
console.log(myArray); // Output: Int8Array(5) [1, 2, 3, 0, 0]
Nó giống như việc đặt các vật phẩm vào các hộp tổ chức của chúng ta.
2. subarray()
Phương thức này trả về một TypedArray mới là một phần của原创.
const originalArray = new Int8Array([1, 2, 3, 4, 5]);
const subArray = originalArray.subarray(1, 4);
console.log(subArray); // Output: Int8Array(3) [2, 3, 4]
Nó giống như việc lấy một vài hộp ra khỏi hệ thống lưu trữ của chúng ta cho một nhiệm vụ cụ thể.
Các ví dụ
Hãy cùng kết hợp tất cả kiến thức này với một số ví dụ thực tế!
Ví dụ 1: Tạo và chỉnh sửa một TypedArray
// Tạo một TypedArray của các số nguyên không dấu 8-bit
const pixelData = new Uint8Array(4);
// Đặt các giá trị RGB cho một điểm ảnh (Đỏ: 255, Xanh lá: 128, Xanh lam: 64, Alpha: 255)
pixelData[0] = 255; // Đỏ
pixelData[1] = 128; // Xanh lá
pixelData[2] = 64; // Xanh lam
pixelData[3] = 255; // Alpha (hoàn toàn trong suốt)
console.log(pixelData); // Output: Uint8Array(4) [255, 128, 64, 255]
Trong ví dụ này, chúng ta sử dụng một Uint8Array để đại diện cho các giá trị màu của một điểm ảnh. Mỗi giá trị介于 0 và 255, hoàn hảo cho các số nguyên không dấu 8-bit!
Ví dụ 2: Sử dụng TypedArrays để cải thiện hiệu suất
const size = 1000000;
// Sử dụng mảng thông thường
console.time('Regular Array');
const regularArray = new Array(size);
for (let i = 0; i < size; i++) {
regularArray[i] = i;
}
console.timeEnd('Regular Array');
// Sử dụng TypedArray
console.time('TypedArray');
const typedArray = new Int32Array(size);
for (let i = 0; i < size; i++) {
typedArray[i] = i;
}
console.timeEnd('TypedArray');
Chạy mã này, và bạn có thể sẽ thấy rằng TypedArray nhanh hơn! Nó giống như việc có một hệ thống lưu trữ tổ chức tốt thay vì ném tất cả vào một đống lớn.
Và thế là xong, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của TypedArrays, từ việc hiểu chúng là gì đến việc thấy chúng trong hành động. Nhớ rằng, thực hành là cách tốt nhất để trở thành chuyên gia, vì vậy đừng ngại thử nghiệm với các khái niệm này.
Trước khi bạn biết điều gì, bạn sẽ trở thành phù thủy TypedArray, tối ưu hóa mã của bạn và ấn tượng với các nhà phát triển khác. Đến gặp lại các bạn, chúc các bạn lập trình vui vẻ! ?????
Credits: Image by storyset