Tiplangan Massiv Metodlari
Tiplangan massivlar (Typed Arrays) oddiy massivlarning ko'plab metodlarini qo'llab-quvvatlaydi, lekin ularning o'ziga xos xususiyatlaridan kelib chiqqan holda ba'zi farqlar mavjud.
Maxsus metodlar
Tiplangan massivlar uchun xos bo'lgan ba'zi metodlar va xususiyatlar:
from() va of()
Ushbu metodlar yangi tiplangan massiv yaratish uchun ishlatiladi:
// String yoki massivdan yaratish
const arr1 = Int16Array.from([1, 2, 3])
// Qiymatlardan yaratish
const arr2 = Int16Array.of(10, 20, 30)BYTES_PER_ELEMENT
Har bir element xotirada necha bayt joy egallashini ko'rsatadi:
const arr = new Int32Array(5)
console.log(arr.BYTES_PER_ELEMENT) // 4Umumiy massiv metodlari
Tiplangan massivlar oddiy massivlar bilan bir xil bo'lgan quyidagi metodlarga ega:
- Iteratsiya (Aylanish):
forEach(),map(),filter(),reduce(),every(),some(),find(),findIndex(). - Qidiruv:
includes(),indexOf(),lastIndexOf(). - O'zgartirish:
reverse(),fill(),sort(),copyWithin(). - Boshqalar:
join(),slice(),subarray().
Subarray vs Slice
slice(): Massivning bir qismini nusxalab yangi massiv yaratadi.subarray(): Massivning bir qismini nusxalamasdan o'sha xotira sohasiga yangi "ko'rinish" (view) yaratadi. Bu juda tez ishlaydi.
Qo'llab-quvvatlanmaydigan metodlar
Tiplangan massivlar o'zgarmas uzunlikka ega bo'lgani uchun, massiv uzunligini o'zgartiruvchi metodlar mavjud emas:
| Metod | Nima uchun mavjud emas? |
|---|---|
push() | Uzunlikni oshiradi. |
pop() | Oxirgi elementni o'chiradi. |
shift() | Birinchi elementni o'chiradi. |
unshift() | Boshiga element qo'shadi. |
splice() | Elementlarni o'chiradi yoki qo'shadi. |
concat() | Ikki massivni birlashtirib yangisizni yaratadi. |
Amaliy misollar
Fetch API bilan ishlatish
Ma'lumotlarni binar ko'rinishda olish:
fetch(url)
.then((response) => response.arrayBuffer())
.then((buffer) => {
const uint8View = new Uint8Array(buffer)
console.log('Birinchi bayt:', uint8View[0])
})Canvas (Tasvirlar) bilan ishlash
const canvas = document.getElementById('myCanvas')
const context = canvas.getContext('2d')
const imageData = context.getImageData(0, 0, canvas.width, canvas.height)
// Tasvir piksellari Uint8ClampedArray ko'rinishida bo'ladi
const pixels = imageData.dataBilib qo'ygan yaxshi
Agar sizga binar ma'lumotlar bilan juda murakkab (turli xil tiplarni bitta joyda saqlash) amallar kerak bo'lsa, DataView-dan foydalaning.
