ArrayBuffer
ArrayBuffer xotira bloki bo‘lib, ko‘pincha Yozilgan Arraylarni saqlash uchun ishlatiladi.
Ushbu blokning tepasida siz bitlarni raqamlar, baytlar yoki boshqa ma’lumotlar turlari sifatida izohlaydigan turli xil ko‘rinishlarni yaratishingiz mumkin.
ArrayBuffer yaratish
Yangi ArrayBuffer yaratish uchun new ArrayBuffer()’dan foydalaning.
Misol
16 baytli ArrayBuffer yaratish:
// Create an ArrayBuffer
const myBuf = new ArrayBuffer(16);
// Get the length in bytes
let len = myBuf.byteLength;
O‘zingiz sinab ko‘ring »
ArrayBuffer hajmi baytlarda ko‘rsatilgan.
byteLength xususiyati o‘lchamni bildiradi.
Yaratilgandan so‘ng, o‘lchamni o‘zgartirib bo‘lmaydi.
ArrayBuffer’ga murojaat qilish
ArrayBuffer-da ma’lumotlarni o‘qish va yozish usullari mavjud emas.
Ma’lumotlarga kirish uchun har doim ko‘rinishdan foydalanishingiz kerak.
Yozilgan Arraylar va DataViews ArrayBuffer-ga raqamli qiymatlarni o‘qish va yozish usulini ta’minlaydi.
Keng tarqalgan tiplangan massivlar:
- Uint8Array - 8-bit unsigned integers
- Int16Array - 16-bit signed integers
- Int32Array - 32-bit signed integers
- Float32Array - 32-bit floating point numbers
- Float64Array - 64-bit floating point numbers
Uint8Array’dan foydalanish
Misol
Har bir Uint8 1 bayt egallaydi.
// Create an ArrayBuffer
const myBuf = new ArrayBuffer(8);
// Create a Uint8Array view
const view = new Uint8Array(myBuf);
// Write max 8 values
view[0] = 10;
view[2] = 128;
view[1] = 255;
// Read values
let v0 = view[0];
let v1 = view[1];
let v2 = view[2];
O‘zingiz sinab ko‘ring »
Int32Array’dan foydalanish
Misol
Har bir Int32 4 bayt egallaydi.
// Create an ArrayBuffer
const myBuf = new ArrayBuffer(12);
// Create an Int32Array view
const view = new Int32Array(myBuf);
// 12 bytes = max 3 Int32 values
view[0] = 100000;
view[1] = 200000;
view[2] = 300000;
// Read values
let v0 = view[0];
let v1 = view[1];
let v2 = view[2];
O‘zingiz sinab ko‘ring »
DataView’dan foydalanish
DataView ArrayBuffer uchun yanada moslashuvchan ko‘rinishdir.
DataView turli tipdagi (Int8, Uint16, Float32 va h.k.) qiymatlarni o‘qish va yozish imkonini beradi.
DataView shuningdek, istalgan bayt ofsetidagi qiymatlarni o‘qish va yozish imkonini beradi.
Misol: DataView yordamida o‘qish va yozish
// Create an ArrayBuffer
const myBuf = new ArrayBuffer(8);
// Create a DataView
const view = new DataView(myBuf);
// Write a 32-bit integer at byte offset 0
view.setInt32(0, 123456);
// Write a 16-bit integer at byte offset 4
view.setInt16(4, 32000);
// Read the values
let v1 view.getInt32(0);
let v2 = view.getInt16(4);
O‘zingiz sinab ko‘ring »
DataView metodlari baytlar tartibini boshqarish uchun ixtiyoriy littleEndian parametriga (true/false) ega.
ArrayBuffer’ni kesish
Siz ArrayBuffer ning bir qismidan nusxa ko‘chirishingiz mumkin
slice() usuli. U yangi ArrayBuffer qaytaradi
belgilangan diapazondagi baytlar bilan.
Misol: ArrayBuffer.slice()
// Create an ArrayBuffer
const myBuf = new ArrayBuffer(8);
// Create a Uint8Array
const view = new Uint8Array(myBuf);
// Fill with values 0 to 7
for (let i = 0; i < view.length; i++) {
view[i] = i;
}
// Create a copy of bytes from 2 to 5 (not including 5)
const sliced = myBuf.slice(2, 5);
const slicedView = new Uint8Array(sliced);
O‘zingiz sinab ko‘ring »
slice() metodi yangi bufer yaratadi.
slice() usuli xotirani asl bufer bilan baham ko‘rmaydi.
Stringlarni konvertatsiya qilish
Misol
Stringni ArrayBuffer’ga aylantirish (UTF-8)
function stringToArrayBuffer(str) {
const encoder = new TextEncoder();
return encoder.encode(str).buffer;
}
const myBuf = stringToArrayBuffer("Hello");
let len1 = myBuf.byteLength;
O‘zingiz sinab ko‘ring »
Misol
ArrayBuffer’ni stringga aylantirish (UTF-8)
function arrayBufferToString(buffer) {
const decoder = new TextDecoder();
return decoder.decode(new Uint8Array(buffer));
}
const encoder = new TextEncoder();
const myBuf = encoder.encode("Hello ArrayBuffer").buffer;
let text = arrayBufferToString(myBuf);
O‘zingiz sinab ko‘ring »
ArrayBuffer’ni ulashish (SharedArrayBuffer)
Sukut bo‘yicha ArrayBuffer mavzular o‘rtasida taqsimlanmaydi.
To share memory between workers, JavaScript provides SharedArrayBuffer.
U o‘zini ArrayBuffer kabi tutadi, lekin uning mazmunini baham ko‘rish mumkin va
Atomics bilan ishlatiladi.
Misol: SharedArrayBuffer yaratish
if (Window.crossOriginIsolated) {
buffer = new SharedArrayBuffer(16);
} else {
buffer = new ArrayBuffer(16);
}
const sharedView = new Int32Array(buffer);
buffer[0] = 42;
let numb = sharedView[0];
O‘zingiz sinab ko‘ring »
Browsers may require special security headers to enable
SharedArrayBuffer (COOP/COEP).
Xulosa
- ArrayBuffer — qat’iy o‘lchamli xotira blokini ifodalovchi quyi darajadagi obyekt
- Siz to‘g‘ridan-to‘g‘ri ArrayBufferga o‘qiy olmaysiz yoki yoza olmaysiz
- ArrayBuffer’ga murojaat qilish uchun ko‘rinishlardan (tiplangan massivlar yoki DataView) foydalanasiz
- Tiplangan massivlar bir xil turdagi sonli ma’lumotlar uchun qulay
- DataView aralash yoki tuzilgan ma’lumotlar uchun yaxshi
- ArrayBuffer qismlarini nusxalash uchun slice()’dan foydalaning
- Umumiy xotirali parallel ishlash uchun SharedArrayBuffer va Atomics’dan foydalaning
Keng tarqalgan qo‘llanilish holatlari
- Fayllardagi ikkilik ma’lumotlar (masalan, rasmlar, videolar, audio) bilan ishlash.
- Handling binary network protocols (WebSockets, WebRTC, etc.).
- Performing performance-critical numeric computations.
- WebAssembly yoki boshqa past darajadagi API bilan o‘zaro ishlash.
ArrayBuffer ma’lumotnomasi
Qayta ko‘rib chiqilgan: 2025-yil dekabr
| Property / Method | Tavsif |
| new ArrayBuffer() | Yangi ArrayBuffer yaratadi |
| arrayBuffer.byteLength | Baytlardagi bufer uzunligi |
| arrayBuffer.slice() | Ushbu bufer qismining nusxasi sifatida yangi ArrayBufferni qaytaradi |
| ArrayBuffer.isView() | Argument ArrayBufferdagi ko‘rinish bo‘lsa, true qiymatini qaytaradi |
Keng tarqalgan ko‘rinishlar (views)
| View | Tavsif | Bytes |
| Int8Array | 8-bit signed integer | 1 |
| Uint8Array | 8-bit unsigned integer | 1 |
| Uint8ClampedArray | 8-bit clamped integer | 1 |
| Int16Array | 16-bit signed integer | 2 |
| Uint16Array | 16-bit unsigned integer | 2 |
| Int32Array | 32-bit signed integer | 4 |
| Uint32Array | 32-bit unsigned integer | 4 |
| Float32Array | 32-bit floating point | 4 |
| Float64Array | 64-bit floating point | 8 |
| DataView | Umumiy ko‘rinish (barcha tiplar uchun) |
Batafsil bilib oling:
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
