January 13

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:

  1. Har qanday turdagi kalit (key): Obyektlar bilan ishlaganda, faqat string yoki symbol tipidagi 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.
  2. Qo'shimcha funksionallar: Map obyektlarga nisbatan qulayroq metodlarni taqdim etadi, masalan, size xossasi 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

  1. Takrorlanmas qiymatlar: Set ichida bir xil qiymat bir necha marta bo'lishi mumkin emas. Agar bir xil qiymat qo'shishga urinsangiz, u qo'shilmaydi.
  2. Qiymatlar tartibi: Set ichida saqlangan qiymatlar qo'shilgan tartibda saqlanadi.
  3. Kalitlar yo'q: Set'da kalitlar ishlatilmaydi, faqat qiymatlar mavjud.
  4. 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 olinmaydi

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:

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

  1. 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.
  2. 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.
  3. 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.
  4. O’lchamni bilib bo’lmaydi:
    WeakMap ichida nechta element borligini aniqlash imkoniyati yo'q (size xossasi 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

  1. Faqat obyekt qiymatlari:
    WeakSet ichida faqat obyektlar saqlanishi mumkin (number, string, yoki boshqa primitiv qiymatlar ishlatilinmaydi).
  2. Takrorlanmas qiymatlar:
    WeakSet ichida bir xil obyektni ikki marta qo'shib ko'rmoqchi bo'lsangiz, u faqat bir marta saqlanadi.
  3. Garbage Collection bilan ishlash:
    WeakSet ichidagi obyektlar boshqa joydan murojaat qilinmasa, ular avtomatik ravishda garbage collection (xotira tozalash) jarayoniga kiritiladi.
  4. Iteration imkoniyati yo'q:
    WeakSet ichidagi obyektlarni iteratsiya qilib bo'lmaydi (forEach yoki for...of ishlamaydi).
  5. O’lchamni bilish imkoni yo'q:
    WeakSet ichidagi elementlar sonini bilish uchun size xossasi 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'shilmaydi

Bu 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!

Muhammadislom_Dev