Tarkibga o'tish

6-bo'lim: Hash map / obyekt / lug'at

↑ Mundarijaga qaytish

79. Kalit bormi (has key)

⏱ O(1) Β· πŸ’Ύ O(1)

JS

const hasKey = (obj, k) => k in obj;
PHP
function hasKey($map, $k) {
    return array_key_exists($k, $map);
}
Python
def has_key(d, k):
    return k in d

Hash map kalitni hash funksiya orqali to'g'ridan-to'g'ri bucket indeksiga aylantiradi β€” shuning uchun kalit bor-yo'qligini tekshirish o'rtacha O(1) bo'ladi:

Hash map: kalit, hash funksiya, bucket va O(1) qidiruv

80. Kalit-qiymat qo'shish / yangilash

⏱ O(1) Β· πŸ’Ύ O(1)

JS

obj[k] = v;
PHP
$map[$k] = $v;
Python
d[k] = v

81. Kalitlar ro'yxati

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const keys = obj => Object.keys(obj);
PHP
function keys($map) {
    return array_keys($map);
}
Python
def keys(d):
    return list(d.keys())

82. Qiymatlar ro'yxati

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const values = obj => Object.values(obj);
PHP
function values($map) {
    return array_values($map);
}
Python
def values(d):
    return list(d.values())

83. Kalit bo'yicha o'chirish

⏱ O(1) Β· πŸ’Ύ O(1)

JS

delete obj[k];
PHP
unset($map[$k]);
Python
d.pop(k, None)

84. Ikki obyektni birlashtirish (merge)

⏱ O(n + m) Β· πŸ’Ύ O(n + m) Eslatma: PHP array_merge da raqamli kalitlar qayta indekslanadi; string kalitlar uchun ikkinchisi ustun keladi.

JS

const merge = (a, b) => ({ ...a, ...b });
PHP
function merge($a, $b) {
    return array_merge($a, $b);
}
Python
def merge(a, b):
    return {**a, **b}

85. Qiymatlar yig'indisi

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const sumValues = obj => Object.values(obj).reduce((a, b) => a + b, 0);
PHP
function sumValues($map) {
    return array_sum($map);
}
Python
def sum_values(d):
    return sum(d.values())

86. Eng katta qiymatli kalit

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const maxKey = obj => Object.keys(obj).reduce((a, b) => obj[b] > obj[a] ? b : a);
PHP
function maxKey($map) {
    return array_search(max($map), $map);
}
Python
def max_key(d):
    return max(d, key=d.get)

87. Obyektni qiymat bo'yicha saralash

⏱ O(n log n) Β· πŸ’Ύ O(n)

JS

const sortByValue = obj =>
  Object.fromEntries(Object.entries(obj).sort((a, b) => a[1] - b[1]));
PHP
function sortByValue($map) {
    asort($map);
    return $map;
}
Python
def sort_by_value(d):
    return dict(sorted(d.items(), key=lambda kv: kv[1]))

88. So'z chastotasi (word frequency)

⏱ O(n) Β· πŸ’Ύ O(k) β€” matndagi so'zlarni sanash.

JS

const wordFreq = s => {
  const m = {};
  for (const w of s.toLowerCase().split(/\s+/).filter(Boolean)) m[w] = (m[w] || 0) + 1;
  return m;
};
PHP
function wordFreq($s) {
    $words = preg_split('/\s+/', strtolower(trim($s)), -1, PREG_SPLIT_NO_EMPTY);
    return array_count_values($words);
}
Python
from collections import Counter

def word_freq(s):
    return dict(Counter(s.lower().split()))

89. Ikki ro'yxatdan obyekt yasash (zip β†’ map)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const zipObject = (keys, vals) =>
  Object.fromEntries(keys.map((k, i) => [k, vals[i]]));
PHP
function zipObject($keys, $vals) {
    return array_combine($keys, $vals);
}
Python
def zip_object(keys, vals):
    return dict(zip(keys, vals))

90. Obyektni teskari aylantirish (invert: key↔value)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const invert = obj =>
  Object.fromEntries(Object.entries(obj).map(([k, v]) => [v, k]));
PHP
function invert($map) {
    return array_flip($map);
}
Python
def invert(d):
    return {v: k for k, v in d.items()}

91. Guruhlash (group by β€” juft/toq misolida)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const groupParity = arr => {
  const g = { even: [], odd: [] };
  for (const x of arr) g[x % 2 === 0 ? "even" : "odd"].push(x);
  return g;
};
PHP
function groupParity($arr) {
    $g = ["even" => [], "odd" => []];
    foreach ($arr as $x) $g[$x % 2 === 0 ? "even" : "odd"][] = $x;
    return $g;
}
Python
def group_parity(arr):
    g = {"even": [], "odd": []}
    for x in arr:
        g["even" if x % 2 == 0 else "odd"].append(x)
    return g