Ma'lumot turlari

Map va Set

Endi biz murakkabroq ma'lumot tuzilmalari bilan tanishamiz: Map (kalit-qiymat juftliklari to'plami, kalit istalgan tur bo'lishi mumkin) va Set (faqat unikal qiymatlar to'plami).

Map — nima uchun kerak?

Map — xuddi Object kabi kalit-qiymat juftliklarini saqlaydi. Ammo Object dan farqli o'laroq, Map da kalit istalgan turdagi qiymat — hatto obyekt yoki funksiya — bo'lishi mumkin.

Asosiy metodlar va xususiyatlar:

map-basic.js
// natija shu yerda chiqadi
map[kalit] shaklida foydalanmang! Bu Map ni oddiy obyektdek ishlatadi va uning barcha afzalliklarini yo'qotadi. Har doim map.set va map.get dan foydalaning.

Obyektni kalit sifatida ishlatish

Map ning eng foydali xususiyatlaridan biri — obyektlarni kalit sifatida ishlatish. Bu oddiy obyektda mumkin emas (obyekt kaliti satrga aylanib qoladi).

map-object-key.js
// natija shu yerda chiqadi
Map kalitlarni SameValueZero algoritmi bo'yicha taqqoslaydi. U === ga o'xshaydi, ammo bitta farq bilan: NaN ning o'ziga tengligini tan oladi, ya'ni NaN ham kalit bo'la oladi.

Zanjir va iteratsiya

map.set map ning o'zini qaytargani uchun chaqiruvlarni zanjir qilish mumkin:

map-chain.js
// natija shu yerda chiqadi

Map bo'yicha aylanish uchun uch xil usul bor:

map-iterate.js
// natija shu yerda chiqadi
Map qo'shish tartibini saqlaydi! Oddiy obyektdan farqli o'laroq (unda son kalitlar avtomatik saralanadi), Map elementlar qanday tartibda qo'shilgan bo'lsa, o'sha tartibda aylanadi.

Map da ham forEach mavjud, xuddi massivdagidek:

map-foreach.js
// natija shu yerda chiqadi

Object bilan bog'liqlik: Object.entries va Object.fromEntries

Map yaratishda uni ikki elementli massivlar massivi bilan to'ldirish mumkin. Aynan shu format Object.entries(obj) tomonidan qaytariladi. Shu tufayli oddiy obyektdan Map yasash oson:

map-from-obj.js
// natija shu yerda chiqadi

Aksincha yo'nalish — Object.fromEntries — kalit/qiymat juftliklaridan oddiy obyekt yasaydi:

map-to-obj.js
// natija shu yerda chiqadi

Set — unikal qiymatlar to'plami

Set — qiymatlarning maxsus turdagi to'plami bo'lib, unda har bir qiymat faqat bir marta uchraydi. Kalit yo'q — faqat qiymatlar.

set-basic.js
// natija shu yerda chiqadi

Set ning eng ko'p uchraydigan qo'llanilishi — massivdan takrorlarni olib tashlash:

set-unique.js
// natija shu yerda chiqadi

Set ham iterable — for..of yoki forEach bilan aylanish mumkin. U ham qo'shish tartibini saqlaydi:

set-iterate.js
// natija shu yerda chiqadi
Moslik uchun Set da ham keys(), values(), entries() mavjud. Set da kalit yo'qligi sababli keys() va values() bir xil natija beradi, entries() esa [qiymat, qiymat] juftliklarini qaytaradi.

Map/Set ni Object/Array bilan qachon ishlatish kerak?

Xulosa