Map, Set, WeakMap, WeakSet nima?
Map, Set, WeakMap, WeakSet JavaScript data strukturalari hisoblanadi va bularning tagi object hisoblanadi. Bularni ishlashini birma bir ko'rib chiqamiz.
Map - bu JavaScript-da kalit-qiymat (key-value) juftlarini saqlash uchun ishlatiladigan ma'lumotlar tuzilmasidir. Map bilan ishlashning asosiy afzalliklari quyidagilardir:
- Har qanday turdagi kalit (key): Obyektlar bilan ishlaganda, faqat
stringyokisymboltipidagi qiymatlar kalit bo'lishi mumkin. Ammo Map har qanday turdagi kalitlardan foydalanish imkonini beradi. Masalan,string,number, yoki boshqa obyektni ham kalit sifatida ishlatish mumkin. - Qo'shimcha funksionallar: Map obyektlarga nisbatan qulayroq metodlarni taqdim etadi, masalan,
sizexossasi orqali o'lchamini aniqlash, iteratsiya qilish, va boshqalar.
const map = new Map();
// String tipidagi kalit
map.set('name', 'Muhammadislom');
// Number tipidagi kalit
map.set(42, 'SchoolNumber');
// Obyektni kalit sifatida
const keyObject = { id: 1 };
map.set(keyObject, 'Object Key');
Set - bu JavaScript-dagi ma'lumotlar tuzilmasi bo'lib, u takrorlanmaydigan (unique) qiymatlar to'plamini saqlash uchun ishlatiladi. Set obyektlardan farqli ravishda, kalit-qiymat juftlarini saqlamaydi, faqat qiymatlar kolleksiyasini saqlaydi.
Set'ning Asosiy Xususiyatlari
- Takrorlanmas qiymatlar: Set ichida bir xil qiymat bir necha marta bo'lishi mumkin emas. Agar bir xil qiymat qo'shishga urinsangiz, u qo'shilmaydi.
- Qiymatlar tartibi: Set ichida saqlangan qiymatlar qo'shilgan tartibda saqlanadi.
- Kalitlar yo'q: Set'da kalitlar ishlatilmaydi, faqat qiymatlar mavjud.
- Qiymat tipi: Har qanday qiymat tipi (
number,string,object, va boshqalar) Set ichida saqlanishi mumkin.
const set = new Set();
set.add(1); // Number
set.add('Hello World'); // String
set.add({ id: 1 }); // Object
// Takroriy qiymat qo'shilmaydi
set.add(1); // Bu qiymat e'tiborga olinmaydiWeakMap - bu JavaScript-da key-value juftlarini saqlash uchun ishlatiladigan maxsus ma'lumotlar tuzilmasi. U oddiy Map ga o'xshab ishlaydi, ammo WeakMap o'ziga xos xususiyatlarga ega:
Albatta! Quyida WeakMap haqida tushunchani to'liqroq va batafsilroq yozib chiqaman:
WeakMap
WeakMap - bu JavaScript-da key-value juftlarini saqlash uchun ishlatiladigan maxsus ma'lumotlar tuzilmasi. U oddiy Map ga o'xshab ishlaydi, ammo WeakMap o'ziga xos xususiyatlarga ega:
WeakMap'ning Asosiy Xususiyatlari
- Kalit faqat obyekt bo'lishi mumkin:
WeakMap ichidagi har bir kalit (key) faqat obyekt (object) bo'lishi shart. Oddiy qiymatlar (string,number, va boshqalar) kalit sifatida ishlatilmaydi. - Garbage Collection bilan ishlash:
WeakMap-da saqlangan obyektlar boshqa joydan murojaat qilinmasa, avtomatik ravishda garbage collection (xotira tozalash) jarayoniga kiritiladi. Bu esa xotirani samarali boshqarishga yordam beradi. - Iteration imkoniyati yo'q:
WeakMap ichidagi ma'lumotlarni iteratsiya qilib bo'lmaydi. Chunki uning asosiy maqsadi xotirani boshqarishni osonlashtirish bo'lib, iteratsiya qilish garbage collection jarayoniga xalaqit berishi mumkin. - O’lchamni bilib bo’lmaydi:
WeakMap ichida nechta element borligini aniqlash imkoniyati yo'q (sizexossasi yo'q).
const weakMap = new WeakMap();
const key1 = { name: 'Object One' };
const key2 = { name: 'Object Two' };
weakMap.set(key1, 'Value for key one');
weakMap.set(key2, 'Value for key two');WeakSet - bu JavaScript'dagi maxsus ma'lumotlar tuzilmasi bo'lib, u takrorlanmaydigan obyektlar to'plamini saqlash uchun ishlatiladi. Oddiy Set ga o'xshab ishlaydi, ammo WeakSet o'ziga xos xususiyatlarga ega.
WeakSet'ning Asosiy Xususiyatlari
- Faqat obyekt qiymatlari:
WeakSet ichida faqat obyektlar saqlanishi mumkin (number,string, yoki boshqa primitiv qiymatlar ishlatilinmaydi). - Takrorlanmas qiymatlar:
WeakSet ichida bir xil obyektni ikki marta qo'shib ko'rmoqchi bo'lsangiz, u faqat bir marta saqlanadi. - Garbage Collection bilan ishlash:
WeakSet ichidagi obyektlar boshqa joydan murojaat qilinmasa, ular avtomatik ravishda garbage collection (xotira tozalash) jarayoniga kiritiladi. - Iteration imkoniyati yo'q:
WeakSet ichidagi obyektlarni iteratsiya qilib bo'lmaydi (forEachyokifor...ofishlamaydi). - O’lchamni bilish imkoni yo'q:
WeakSet ichidagi elementlar sonini bilish uchunsizexossasi mavjud emas.
const weakSet = new WeakSet();
const obj1 = { name: 'Object 1' };
const obj2 = { name: 'Object 2' };
weakSet.add(obj1);
weakSet.add(obj2);
// Takroriy obyekt qo'shilmaydi
weakSet.add(obj1); // Bu qiymat qayta qo'shilmaydiBu savol turi interviewni topshirish leveliga qarab chuqurroq kirishi mumkin interview oluvchi. Xato va kamchiliklari bo'lsa uzr so'rayman! Share qilinganida mualliflik huquqiga amal qilinsin!