ЈаваСцрипт мапа је колекција која чува сваки од својих елемената као пар кључ-вредност. Овај тип података се такође назива асоцијативни низ или речник.
Можете користити било који тип података (примитивне и објекте) као кључ или вредност. Објекат Мап памти оригинални редослед уметања, иако ћете обично приступати вредностима по њиховом кључу.
У овом чланку ћете научити о десет метода ЈаваСцрипт мапе које би требало да савладате данас.
1. Како направити нову мапу у ЈаваСцрипт-у
Можете креирати нови објекат Мап користећи Мапа() конструктор. Овај конструктор прихвата један параметар: објекат који се може понављати чији су елементи парови кључ-вредност.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа'],
[1995, 'Бетмен заувек'],
[2005, 'Бетмен почиње'],
[2008, 'Тхе Дарк Книгхт'],
[2012, 'Тхе Дарк Книгхт Рисес']
]);
цонсоле.лог (мапОбј);
Излаз:
Мапа (7) {
1966 => 'Бетмен: Филм',
1989 => 'Бетмен',
1992 => 'Бетмен се враћа',
1995 => 'Бетмен заувек',
2005 => 'Бетмен почиње',
2008 => 'Мрачни витез',
2012 => 'Тхе Дарк Книгхт Рисес'
}
Ако не унесете параметар, ЈаваСцрипт ће креирати нову празну мапу.
нека мапОбј = нев Мап();
цонсоле.лог (мапОбј);
Излаз:
Мапа (0) {}
Ако покушате да креирате мапу са дуплираним кључевима, сваки поновљени кључ ће преписати претходну вредност новом вредношћу.
нека мапОбј = нова мапа([
['кључ1', 'вредност1'],
['кључ2', 'вредност2'],
['кључ2', 'новаВалуе2']
]);
цонсоле.лог (мапОбј);
Излаз:
Мапа (2) {
'кључ1' => 'вредност1',
'кеи2' => 'новаВалуе2'
}
Овде је вредност ускладиштена у односу на кеи2 кључ је невВалуе2, не раније вредност2.
Такође можете да креирате објекат мапе који садржи парове кључ-вредност користећи мешовите типове података.
нека мапОбј = нова мапа([
["стринг1", 1],
[2, "стринг2"],
["стринг3", 433.234],
[23.56, 45]
]);
цонсоле.лог (мапОбј);
Излаз:
Мапа (4) {
'стринг1' => 1,
2 => 'стринг2',
'стринг3' => 433.234,
23.56 => 45
}
2. Додајте нове елементе објекту карте
Можете додати нови елемент објекту Мап користећи комплет() методом. Овај метод прихвата кључ и вредност, а затим додаје нови елемент објекту Мап. Метода затим враћа нови објекат Мап са додатом вредношћу. Ако кључ већ постоји у мапи, нова вредност ће заменити постојећу вредност.
нека мапОбј = нев Мап();
мапОбј.сет (1966, 'Бетмен: Филм');
мапОбј.сет (1989, 'Бетмен');
мапОбј.сет (1992, 'Бетмен се враћа');
мапОбј.сет (1995, 'Бетман заувек');
цонсоле.лог (мапОбј);
Излаз:
Мапа (4) {
1966 => 'Бетмен: Филм',
1989 => 'Бетмен',
1992 => 'Бетмен се враћа',
1995 => 'Бетмен заувек'
}
Такође можете да користите променљиве или константе као кључеве или вредности:
цонст иеар1 = 1966;
цонст мовиеНаме1 = 'Бетмен: Филм';
нека година2 = 1989;
вар мовиеНаме2 = 'Бетмен';
нека мапОбј = нев Мап();
мапОбј.сет (година1, име филма1);
мапОбј.сет (иеар2, мовиеНаме2);
цонсоле.лог (мапОбј);
Излаз:
Мапа (2) {
1966 => 'Бетмен: Филм',
1989 => 'Бетмен'
}
Тхе комплет() метода подржава уланчавање.
нека мапОбј = нев Мап();
мапОбј.сет (1966, 'Бетмен: Филм')
.сет (1989, 'Бетмен')
.сет (1992, 'Бетмен се враћа')
.сет (1995, 'Бетмен заувек');
цонсоле.лог (мапОбј);
Излаз:
Мапа (4) {
1966 => 'Бетмен: Филм',
1989 => 'Бетмен',
1992 => 'Бетмен се враћа',
1995 => 'Бетмен заувек'
}
3. Уклоните све елементе са објекта карте
Можете уклонити све елементе из објекта Мап користећи јасно() методом. Овај метод се увек враћа недефинисан.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен']
]);
цонсоле.лог("Величина објекта мапе: " + мапОбј.сизе);
цонсоле.лог (мапОбј);
мапОбј.цлеар();
цонсоле.лог("Величина објекта Мап након брисања елемената: " + мапОбј.сизе);
цонсоле.лог (мапОбј);
Излаз:
Величина објекта Мапе: 2
Мапа (2) { 1966 => 'Бетмен: Филм', 1989 => 'Бетмен' }
Величина објекта Мап након брисања елемената: 0
Мапа (0) {}
4. Избришите одређени елемент са мапе
Можете уклонити одређени елемент из објекта Мап користећи делете() методом. Овај метод прихвата кључ елемента за брисање са мапе. Ако кључ постоји, метода се враћа истина. У супротном, враћа се лажно.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен']
]);
цонсоле.лог("Иницијална мапа: ");
цонсоле.лог (мапОбј);
мапОбј.делете (1966);
цонсоле.лог("Мапа након брисања елемента који има кључ као 1966");
цонсоле.лог (мапОбј);
Излаз:
Почетна мапа:
Мапа (2) { 1966 => 'Бетмен: Филм', 1989 => 'Бетмен' }
Мапа након брисања елемента који има кључ као 1966
Мапа (1) { 1989 => 'Бетмен' }
5. Проверите да ли елемент постоји на мапи
Можете проверити да ли елемент постоји у објекту Мап користећи има() методом. Овај метод прихвата кључ елемента као параметар за тестирање присуства у објекту Мап. Овај метод се враћа истина ако кључ постоји. У супротном, враћа се лажно.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа'],
[1995, 'Бетмен заувек'],
[2005, 'Бетмен почиње'],
[2008, 'Тхе Дарк Книгхт'],
[2012, 'Тхе Дарк Книгхт Рисес']
]);
цонсоле.лог (мапОбј.хас (1966));
цонсоле.лог (мапОбј.хас (1977));
Излаз:
истина
лажно
Елемент са кључем 1966 постоји у објекту Мап, па је метод враћен истина. Али, пошто нема елемента са кључем 1977 у објекту Мап, метод се вратио лажно од другог позива.
Повезан: Шта је ЈаваСцрипт и како функционише?
6. Приступ вредности за одређени кључ
Тхе добити() метода враћа одређени елемент из објекта Мап. Овај метод прихвата кључ елемента као параметар. Ако кључ постоји у објекту Мап, метода враћа вредност елемента. У супротном, враћа се недефинисан.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа'],
[1995, 'Бетмен заувек'],
[2005, 'Бетмен почиње'],
[2008, 'Тхе Дарк Книгхт'],
[2012, 'Тхе Дарк Книгхт Рисес']
]);
цонсоле.лог (мапОбј.гет (1966));
цонсоле.лог (мапОбј.гет (1988));
Излаз:
Бетмен: Филм
недефинисан
Елемент са кључем 1966 постоји у објекту Мап, тако да је метод вратио вредност елемента. Нема елемента са кључем 1988 у објекту Мап, па се метод вратио недефинисан.
7. Приступите уносима мапе преко итератора
Према речима званичника МДН веб документи:
Метод ентриес() враћа нови објекат Итератор који садржи парове [кључ, вредност] за сваки елемент у објекту Мап по редоследу уметања. У овом конкретном случају, овај објекат итератора је такође итерабле, тако да се фор-оф петља може користити. Када се користи протокол [Симбол.итератор], он враћа функцију која, када се позове, сама враћа овај итератор.
Можете приступити сваком елементу мапе користећи овај итератор и а фор...оф изјава:
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа'],
[1995, 'Бетмен заувек'],
[2005, 'Бетмен почиње'],
[2008, 'Тхе Дарк Книгхт'],
[2012, 'Тхе Дарк Книгхт Рисес']
]);
фор (нека унос мапОбј.ентриес()) {
цонсоле.лог (унос);
}
Излаз:
[ 1966, 'Бетмен: Филм' ]
[ 1989, 'Бетмен' ]
[ 1992, 'Бетмен се враћа' ]
[ 1995, 'Бетмен заувек' ]
[ 2005, 'Бетмен почиње' ]
[ 2008, 'Тхе Дарк Книгхт' ]
[ 2012, 'Тхе Дарк Книгхт Рисес' ]
Или можете да користите функцију додељивања ЕС6 уништавања да бисте приступили сваком кључу и вредности:
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа'],
[1995, 'Бетмен заувек'],
[2005, 'Бетмен почиње'],
[2008, 'Тхе Дарк Книгхт'],
[2012, 'Тхе Дарк Книгхт Рисес']
]);
фор (нека [кључ, вредност] мапОбј.ентриес()) {
цонсоле.лог("Кључ: " + кључ + " Вредност: " + вредност);
}
Излаз:
Кључ: 1966. Вредност: Батман: Филм
Кључ: 1989. Вредност: Бетмен
Кључ: 1992. Вредност: Бетмен се враћа
Кључ: 1995. Вредност: Бетмен заувек
Кључ: 2005. Вредност: Бетмен почиње
Кључ: 2008. Вредност: Мрачни витез
Кључ: 2012. Вредност: Тхе Дарк Книгхт Рисес
8. Како прећи преко вредности мапе
Тхе вредности() метода враћа ан Итератор објекат који садржи све вредности у мапи и то ради редоследом уметања.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа']
]);
цонст итераторОбј = мапОбј.валуес();
за (нека вредност итераторОбј) {
цонсоле.лог (вредност);
}
Излаз:
Бетмен: Филм
Батман
Бетмен се враћа
9. Итерирајте преко кључева мапе
Тхе кључеви() метода враћа ан Итератор објекат који садржи све кључеве у мапи и то ради редоследом уметања.
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа']
]);
цонст итераторОбј = мапОбј.кеис();
фор (нека кључ итераторОбј) {
цонсоле.лог (кључ);
}
Излаз:
1966
1989
1992
Повезан: ЈаваСцрипт функције стрелице могу да вас учине бољим програмером
10. Итерирајте елементе на мапи користећи повратни позив
Тхе за сваки() метода позива функцију повратног позива за сваки елемент објекта Мап. Функција повратног позива узима два параметра: кључ и вредност.
функција принтКеиВалуе (кључ, вредност) {
цонсоле.лог("Кључ: " + кључ + " Вредност: " + вредност);
}
нека мапОбј = нова мапа([
[1966, 'Бетмен: Филм'],
[1989, 'Бетмен'],
[1992, 'Бетмен се враћа']
]);
мапОбј.форЕацх (принтКеиВалуе);
Излаз:
Кључ: Бетмен: Филм Вредност: 1966
Кључ: Бетмен Вредност: 1989
Кључ: Бетмен Повратна вредност: 1992
Сада знате о мапама у ЈаваСцрипт-у
Сада имате довољно знања да савладате концепт мапа у ЈаваСцрипт-у. Структура података мапе се широко користи у многим програмским задацима. Када га савладате, можете да пређете на друге изворне ЈаваСцрипт објекте као што су скупови, низови и тако даље.
Желите да разумете ЈаваСцрипт низове, али не можете да се ухватите у коштац са њима? Погледајте наше примере ЈаваСцрипт низова за смернице.
Реад Нект
- Програмирање
- Програмирање
- ЈаваСцрипт
Иуврај је студент додипломских студија рачунарских наука на Универзитету у Делхију, Индија. Он је страствен за Фулл Стацк Веб Девелопмент. Када не пише, истражује дубину различитих технологија.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили