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.

ULASHISH

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)  


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!