JavaScript Tiplangan Massivlar (Typed Arrays)
Tiplangan massivlar (Typed Arrays) — bu JavaScript-da binar ma'lumotlar (binary data) bilan ishlash uchun mo'ljallangan maxsus massivlardir.
Tiplangan massivlar nima?
Oddiy massivlardan farqli o'laroq, tiplangan massivlar:
- O'zgarmas uzunlikka (fixed length) ega.
- Faqat ma'lum bir tipdagi (masalan, faqat 8-bitli butun sonlar) ma'lumotlarni saqlaydi.
- Xotiradan (RAM) juda samarali foydalanadi. :::
Yaratish usullari
Tiplangan massivlarni bir necha usul bilan yaratish mumkin:
1. Bo'sh massiv yaratish
Uzunligi 5 bayt bo'lgan massiv (barcha elementlari 0 bo'ladi):
const myArr = new Uint8Array(5)2. Oddiy massivdan yaratish
const myArr = new Uint8Array([0, 1, 2, 3, 4])3. Qiymatlar ro'yxatidan yaratish
const myArr = Uint8Array.of(0, 1, 2, 3, 4)Nima uchun tiplangan massivlar kerak?
Tiplangan massivlar binar ma'lumotlarni C tilidagidek samarali boshqarish imkonini beradi. Ular quyidagi sohalarda juda muhim:
- WebGL va Canvas: Grafika va tasvirlarni tezkor qayta ishlash.
- File API: Mahalliy fayllarni tez o'qish va yozish.
- Media API: Audio va video ma'lumotlarni oqim (stream) ko'rinishida boshqarish.
- WebSockets: Tarmoq orqali binar ma'lumotlarni samarali uzatish.
Tiplangan massiv turlari
JavaScript-da har bir ma'lumot turi uchun alohida massiv tipi mavjud:
| Nomi | Diapazon (Min / Max) | Hajmi (Bayt) | Turi |
|---|---|---|---|
Int8Array | -128 / 127 | 1 | Ishorali 8-bit butun son |
Uint8Array | 0 / 255 | 1 | Ishorasiz 8-bit butun son |
Uint8ClampedArray | 0 / 255 | 1 | 8-bit (ranglar uchun cheklangan) |
Int16Array | -32768 / 32767 | 2 | Ishorali 16-bit butun son |
Uint16Array | 0 / 65535 | 2 | Ishorasiz 16-bit butun son |
Int32Array | -2.1 mlrd / 2.1 mlrd | 4 | Ishorali 32-bit butun son |
Uint32Array | 0 / 4.2 mlrd | 4 | Ishorasiz 32-bit butun son |
Float32Array | -3.4e38 / 3.4e38 | 4 | 32-bit haqiqiy son |
Float64Array | -1.8e308 / 1.8e308 | 8 | 64-bit haqiqiy son |
Uint8Array va Uint8ClampedArray farqi
Bu ikki massiv ham 0 va 255 oralig'idagi sonlarni saqlaydi. Farqi shundaki, agar siz 255-dan katta qiymat bermoqchi bo'lsangiz:
- Uint8Array: Baytlarning faqat oxirgi 8-bitini oladi (aylanma hisob).
- Uint8ClampedArray: Qiymatni chegaralaydi (agar 300 bo'lsa, uni 255 deb qabul qiladi). Bu xususiyat ranglar (RGBA) bilan ishlashda juda qulay.
Muhim eslatma
Tiplangan massivlar oddiy massiv (Array) emas!
Array.isArray(typedArray)har doimfalseqaytaradi.- Ular o'zgarmas uzunlikda bo'lgani uchun
push()yokipop()metodlari mavjud emas.
Keyingi darslar
Tiplangan massivlar bilan ishlashni davom ettiring:
