- Нашр шудааст дар
Харитаи Hash дар JavaScript: Структураҳои Калид-Арзиши Баланд-Иҷро
- Муаллифон
- Ном
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Чаро Map?
Хуб, ҳамаи мо медонем, ки забони дигари барномасозӣ чизе бо номи Hashtable дорад. Ин як сохтори маълумот аст, ки ҷуфтҳои калид-арзишро нигоҳ медорад, ки барои ҷустуҷӯи вақти доимии O(1) хеле хубанд. Ин як сохтори маълумоти бартарӣ доштаест, ки мо метавонем барои нигоҳдории маълумот истифода барем. Дар JavaScript, мо сохтори маълумоти сохташудае мисли Hashtable надорем. Аммо мо метавонем аз объект барои нигоҳдории ҷуфтҳои калид-арзиш истифода барем. Ин дар JavaScript Map номида мешавад.
Map чист?
Map як маҷмӯи элементҳост, ки ҳар як элемент ҳамчун як ҷуфти калид-арзиш нигоҳдорӣ мешавад. Калидҳо ва арзишҳои Map метавонанд ҳар гуна арзиш бошанд (ҳам объектҳо ва ҳам арзишҳои ибтидоӣ). Як объекти Map элементҳои худро дар тартиби воридшавӣ такрор мекунад — як давраи for...of як маҷмӯаи [калид, арзиш] -ро барои ҳар як такрор бармегардонад.
Map ҷуфтҳои калид-арзишро нигоҳ медорад, ки калидҳо метавонанд ҳар гуна намуди маълумот бошанд. Map дорои хосият аст, ки андозаи Map -ро нишон медиҳад. Map тартиби воридшавии аслии калидҳоро дар хотир медорад.
Методҳо ва Хосиятҳои Map
Метод | Тавсиф |
---|---|
new Map() | Як объекти нави Map эҷод мекунад |
set() | Арзишро барои калид дар Map муайян мекунад |
get() | Арзишро барои калид бармегардонад |
has() | Як булеанро бармегардонад, ки нишон медиҳад, ки оё як калид дар Map мавҷуд аст |
delete() | Калидро аз Map нест мекунад |
clear() | Ҳамаи калидҳоро аз Map нест мекунад |
values() | Як объекти такроркунандаи арзишҳо дар Map -ро бармегардонад |
keys() | Як объекти такроркунандаи калидҳо дар Map -ро бармегардонад |
entries() | Як объекти такроркунандаи ҷуфтҳои калид-арзиш дар Map -ро бармегардонад |
forEach() | Як функсияи додашударо як маротиба барои ҳар як ҷуфти калид-арзиш дар Map иҷро мекунад |
Хосият | Тавсиф |
---|---|
size | Шумораи ҷуфтҳои калид/арзиш дар Map -ро бармегардонад |
Мисоли Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']
console.log(map.size) // 5
Такрори Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
// Такрори калидҳо
for (const key of map.keys()) {
console.log(key)
}
// Такрори арзишҳо
for (const value of map.values()) {
console.log(value)
}
// Такрори ҷуфтҳои калид-арзиш
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// Такрори ҷуфтҳои калид-арзиш
map.forEach((value, key) => {
console.log(key, value)
})
Map vs. Object
Map | Object |
---|---|
Map як маҷмӯи ашёи маълумоти калиддор аст, ба монанди Object. Аммо фарқи асосии он дар он аст, ки Map ба калидҳои ҳар гуна намуд иҷозат медиҳад. | Калидҳои Object бояд ё тор бошанд ё рамз. |
Map такроршаванда аст ва метавонад ба осонӣ такрор карда шавад. | Object такроршаванда нест ва наметавонад ба осонӣ такрор карда шавад. |
Map дорои як усули forEach -и сохташуда аст, бинобар ин ба табдил додани он ба маҷмӯа зарур нест. | Object дорои усули forEach -и сохташуда нест. |
Map дорои хосиятҳои size аст, бинобар ин мо метавонем ба осонӣ шумораи ашёро ба даст орем. | Object дорои хосиятҳои size нест. |
Map метавонад объектҳоро ҳамчун калид истифода барад. | Object наметавонад объектҳоро ҳамчун калид истифода барад. |
Map ба таври умум аз Object тезтар аст. | Object ба таври умум аз Map сусттар аст. |
Хулоса
Дар ин мақола, мо дар бораи Map дар JavaScript омӯхтем. Мо дар бораи методҳо ва хосиятҳои Map омӯхтем. Мо инчунин дар бораи фарқи байни Map ва Object огоҳ шудем. Умедворам, ки шумо аз ин мақола лаззат бурдед. Агар шумо ягон савол доред, лутфан шарҳи худро дар зер гузоред. Ташаккур барои хондани шумо.
Асли он дар ин ҷо нашр шудааст: https://blog.imam.dev/blog/javascript-hashmap
Манобеъ
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map