Umumiy ko'rinish
Biror narsani key bo'yicha qidirishingiz kerak bo'lganda — foydalanuvchini id bo'yicha, hisobni so'z bo'yicha — key→value tuzilmasi array'dan ustun turadi. Array'da mos kelganini topish uchun har bir elementni skanerlashingiz kerak bo'lardi (bu O(n), "order n", ro'yxat bilan birga o'sadigan ish). Key'ga asoslangan qidiruv taxminan O(1) — "order one", u qanchalik katta bo'lishidan qat'i nazar asosan bir zumda, chunki u to'g'ridan-to'g'ri qiymatga sakraydi.
Objects
Oddiy object string key'larni qiymatlarga moslashtiradi. Oddiy, o'zgarmas key to'plamlari uchun ajoyib.
const prices = { apple: 3, pear: 5 };
prices.apple; // 3 — direct lookup, no scanning
prices.banana; // undefined — key not presentMap
Map — bu maxsus qurilgan key→value to'plami. U keylar string bo'lmaganda qulay (ular numbers, objects, har qanday narsa bo'lishi mumkin) va u qo'shilish tartibini eslab qoladi.
const scores = new Map();
scores.set("Ana", 10);
scores.set("Bo", 7);
scores.get("Ana"); // 10
scores.has("Bo"); // true
scores.size; // 2Nima uchun { name, score } objectlar array'idan ko'ra Map'ni afzal ko'rish kerak? Array'da Ana'ning ballini topish uchun uni topguningizcha loop qilishingiz kerak bo'lardi. Map bilan siz to'g'ridan-to'g'ri scores.get("Ana")'ni chaqirasiz.
Set — noyoblik uchun
Set faqat noyob qiymatlarni saqlaydi — takrorlanuvchilar avtomatik ravishda e'tiborsiz qoldiriladi. "Buni ilgari ko'rganmidim?" yoki takrorlanuvchilarni olib tashlash uchun mukammal.
const tags = new Set(["js", "css", "js"]);
tags.size; // 2 — the duplicate "js" collapsed
tags.has("css"); // true
// Deduplicate an array in one line:
const unique = [...new Set([1, 2, 2, 3])]; // [1, 2, 3]Uchrashlarni sanash (frequency map)
Juda keng tarqalgan suhbat shakli: har bir narsa necha marta paydo bo'lishini sanash. Siz ro'yxat bo'ylab bir marta yurasiz va object yoki Map'ni sanoq belgilari sifatida ishlatasiz.
const words = ["a", "b", "a", "c", "a"];
const counts = {};
for (const w of words) {
counts[w] = (counts[w] || 0) + 1;
}
// { a: 3, b: 1, c: 1 }(counts[w] || 0) joriy hisobni o'qiydi, yoki bu w'ni birinchi marta ko'rayotgan bo'lsak 0'ni, so'ngra bittasini qo'shadi. Ro'yxat bo'ylab bitta o'tish (O(n)), sanoqda bir zumda qidiruvlar bilan — bu kombinatsiya frequency maplar nima uchun shunchalik tez va shunchalik keng tarqalganligining sababidir.
Suhbat maslahatlari
- Yutuqni tushuntiring: array qidiruvi har bir elementni skanerlaydi (O(n)); object/
Mapqidiruvi to'g'ridan-to'g'ri qiymatga sakraydi (taxminan O(1)). - Masalada "noyob" yoki "takrorlanuvchilar" tilga olinganda
Set'ga murojaat qiling; "sanash" yoki "eng ko'p uchraydigan" tilga olinganda frequency map'ga murojaat qiling. Mapstring bo'lmagan keylarga ruxsat berishini va tartibni saqlashini, oddiy objectlar esa oddiy string keylar uchun yaxshi ekanligini eslatib o'ting.
Muhokama
Hozircha izoh yo‘q
Muhokamada qatnashish uchun tizimga kiring.
KirishHozircha fikr yo‘q
Birinchi bo‘lib yozing: bu mavzuda nima yordam berdi — yoki nimani aniqroq tushuntirish kerak.