16:45 222 | |
|
Map ('мэпы') - коллекции, или карты.
В объектах зачастую в качестве свойств используются строки: В данном случае, к примеру, свойство name является строкой, хоть и записано без кавычек, это всё равно строка. Что же будет, если в качестве ключа передать не строку, а к примеру число: А произойдёт то, что 4 превратится в строку и в этом можно убедиться, если вывести в консоль самый первый ключ нашего объекта Но если в качестве ключа мы попробуем поставить объект, то получим ошибку. Но бывают ситуации, когда вместо строк в качестве ключей нам нужны другие типы данных. К примеру, у нас есть список магазинов торговой сети, каждый из них содержит определённый перечень товаров и на каждый из них выделяется определённый бюджет: К каждому из этих объектов (один объект - это один магазин) нужно добавить его бюджет, таким образом, чтобы сформировались пары магазин - бюджет. Чтобы создать новую карту: Созданная новая карта изначально пустая и её нужно заполнить. В качестве ключей в "мэпах" можно использовать массивы, объекты, функции и т.д. По типу данных "мэпы" - это всё те же объекты, но со своими специфическими методами. Метод set() Синтаксис этого метода: Применительно к нашим магазинам: Или тоже самое, но цепочкой: Или как вариант, для удобства читаемости: Работа цепочки возможна благодаря тому, что каждый раз, когда отрабатывает звено цепочки, обратно возвращается объект map Если сейчас вывести в консоль содержимое нашей карты: То увидим:
Map(3) {
Мы видим что это объект, у которого свойства (ключи) также являются объектами
{ rice: 500 } => 5000, { oil: 200 } => 15000, { bread: 50 } => 25000 } Цифры бюджетов магазинов могут приходить из каких-то таблиц, либо баз данных И тогда нам нужно соединить две структуры: массив с магазинами и массив с бюджетами, для этого мы можем использовать обычный цикл, либо метод forEach(): В аргумент [i]shop при переборе по очереди будут попадать каждый из из трёх объектов, содержащихся в массиве shops , при этом i - это порядковый номер каждого из элементов массива. Если сейчас вывести в консоль содержимое карты, то получим тот же результат, что и до этого. | |
|
|
|
| Всего комментариев: 2 | 1 2 » |
|
| |
| 1-1 2-2 | |