JavaScript - Objek TypedArray

Hai teman-teman, para bintang pemrograman masa depan! ? Hari ini, kita akan memulai perjalanan yang menarik ke dunia TypedArrays di JavaScript. Jangan khawatir jika Anda baru saja memulai pemrograman - saya akan menjadi panduan ramah Anda, dan kita akan mengambil langkah ini satu per satu. Jadi, ambil minumannya yang favorit, duduk nyaman, dan mari kita masuk ke dalam!

JavaScript - TypedArray

Apa Itu TypedArray?

Bayangkan Anda sedang mengatur pesta besar (siapa yang tidak suka pesta yang bagus, kan?). Anda perlu mencatat berapa banyak gelas, piring, dan peralatan makan yang Anda punyai. Itu seperti apa yang dilakukan TypedArray di JavaScript - itu membantu kita mengatur dan menyimpan jenis data tertentu secara efisien.

TypedArray adalah jenis khusus array di JavaScript yang hanya dapat mengandung angka dari jenis tertentu. Itu seperti memiliki kotak terpisah untuk tusuk gigi, sendok, dan pisau Anda, bukan melemparkan semuanya ke dalam satu lemari besar.

// Membuat TypedArray dari integer 8-bit
const myArray = new Int8Array(5);
console.log(myArray); // Output: Int8Array(5) [0, 0, 0, 0, 0]

Dalam contoh ini, kita telah membuat TypedArray yang dapat menyimpan lima integer 8-bit. Itu seperti menyiapkan lima kotak kecil, masing-masing dapat menampung angka antara -128 dan 127.

Mengapa TypedArray?

Mungkin Anda bertanya-tanya, "Mengapa memakai TypedArrays saat kita sudah punya array biasa?" Pertanyaan bagus! TypedArrays memiliki beberapa kekuatan khusus yang membuatnya sempurna untuk situasi tertentu:

  1. Kecepatan: Mereka lebih cepat untuk operasi numerik.
  2. Efisiensi memori: Mereka menggunakan jumlah memori tetap.
  3. Kompatibilitas: Mereka bermain lancar dengan data biner dan bahasa lain.

Itu seperti menggunakan alat spesialisasi bukan pisau Swiss Army - kadang-kadang, Anda butuh kecocokan sempurna!

Objek TypedArray

JavaScript menawarkan berbagai jenis TypedArrays, masing-masing dirancang untuk jenis dan ukuran nomor yang berbeda. Mari kita lihat mereka dalam tabel yang rapi:

TypedArray Deskripsi Rentang
Int8Array Integer 8-bit terdertifikasi -128 ke 127
Uint8Array Integer 8-bit tak terdertifikasi 0 ke 255
Int16Array Integer 16-bit terdertifikasi -32,768 ke 32,767
Uint16Array Integer 16-bit tak terdertifikasi 0 ke 65,535
Int32Array Integer 32-bit terdertifikasi -2,147,483,648 ke 2,147,483,647
Uint32Array Integer 32-bit tak terdertifikasi 0 ke 4,294,967,295
Float32Array Floating point 32-bit ~1.2E-38 ke ~3.4E+38
Float64Array Floating point 64-bit ~5.0E-324 ke ~1.8E+308

Wah, itu daftar yang panjang! Jangan khawatir jika itu terlihat membingungkan - kita akan menggunakan contoh untuk membuatnya jelas.

Properti TypedArray

TypedArrays datang dengan beberapa properti yang praktis. Mari kita jelajahi mereka:

1. length

Ini memberitahu kita berapa banyak elemen ada dalam TypedArray kita.

const myArray = new Int16Array(3);
console.log(myArray.length); // Output: 3

2. BYTES_PER_ELEMENT

Properti ini memberitahu kita berapa banyak byte setiap elemen dalam array mengambil.

console.log(Int8Array.BYTES_PER_ELEMENT); // Output: 1
console.log(Int16Array.BYTES_PER_ELEMENT); // Output: 2

Itu seperti mengetahui besar setiap kotak dalam sistem penyimpanan kita!

Metode Statik TypedArray

TypedArrays datang dengan beberapa metode bawaan yang kita dapat gunakan tanpa membuat instance. Mari kita lihat beberapa:

1. TypedArray.from()

Metode ini membuat TypedArray baru dari objek seperti array.

const regularArray = [1, 2, 3, 4];
const typedArray = Int8Array.from(regularArray);
console.log(typedArray); // Output: Int8Array(4) [1, 2, 3, 4]

Itu seperti mengonversi lemari peralatan campur menjadi kotak yang rapi!

2. TypedArray.of()

Metode ini membuat TypedArray baru dengan jumlah argumen yang bervariasi.

const myArray = Int16Array.of(1, 2, 3, 4, 5);
console.log(myArray); // Output: Int16Array(5) [1, 2, 3, 4, 5]

Itu seperti mengatakan, "Ini adalah item, harap mengatur mereka untuk saya!"

Metode Instan TypedArray

Sekarang, mari kita lihat beberapa metode yang kita dapat gunakan pada instance TypedArray:

1. set()

Metode ini memungkinkan kita menyalin nilai ke TypedArray.

const myArray = new Int8Array(5);
myArray.set([1, 2, 3]);
console.log(myArray); // Output: Int8Array(5) [1, 2, 3, 0, 0]

Itu seperti memasukkan item ke dalam kotak yang diatur.

2. subarray()

Metode ini mengembalikan TypedArray baru yang adalah bagian dari asli.

const originalArray = new Int8Array([1, 2, 3, 4, 5]);
const subArray = originalArray.subarray(1, 4);
console.log(subArray); // Output: Int8Array(3) [2, 3, 4]

Itu seperti mengambil beberapa kotak dari sistem penyimpanan kita untuk tugas tertentu.

Contoh

Mari kita gabungkan semua pengetahuan ini dengan beberapa contoh praktis!

Contoh 1: Membuat dan Mengubah TypedArray

// Membuat TypedArray integer 8-bit tak terdertifikasi
const pixelData = new Uint8Array(4);

// Menetapkan nilai RGB untuk sebuah piksel (Merah: 255, Hijau: 128, Biru: 64, Alpha: 255)
pixelData[0] = 255; // Merah
pixelData[1] = 128; // Hijau
pixelData[2] = 64;  // Biru
pixelData[3] = 255; // Alpha (tebal sepenuhnya)

console.log(pixelData); // Output: Uint8Array(4) [255, 128, 64, 255]

Dalam contoh ini, kita menggunakan Uint8Array untuk merepresentasikan nilai warna sebuah piksel. Setiap nilai berada antara 0 dan 255, sempurna untuk integer 8-bit tak terdertifikasi!

Contoh 2: Menggunakan TypedArrays untuk Performansi

const size = 1000000;

// Menggunakan array biasa
console.time('Regular Array');
const regularArray = new Array(size);
for (let i = 0; i < size; i++) {
regularArray[i] = i;
}
console.timeEnd('Regular Array');

// Menggunakan TypedArray
console.time('TypedArray');
const typedArray = new Int32Array(size);
for (let i = 0; i < size; i++) {
typedArray[i] = i;
}
console.timeEnd('TypedArray');

Jalankan kode ini, dan Anda kemungkinan akan melihat TypedArray lebih cepat! Itu seperti memiliki sistem penyimpanan yang teratur versus melemparkan semuanya ke dalam satu puing.

Dan itu adalah, teman-teman! Kita telah mengembara melalui negeri TypedArrays, dari memahami apa itu hingga melihat mereka dalam aksi. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini.

Sebelum Anda tahu, Anda akan menjadi ahli TypedArray, optimalkan kode Anda, dan mengimpress rekan pemrogram Anda. Sampai jumpa lagi, semangat coding! ??‍??‍?

Credits: Image by storyset