Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Объект Map (ассоциативный массив)
- Тип данных Map предназначен для создания ассоциативных массив (пар «ключ-значение»). В качестве ключа можно использовать как примитивные, так и ссылочные типы данных. Это одно из основных отличий от ассоциативных массивов как объектов, у которых в качестве ключа можно использовать только строки.
- Пример создание ассоциативного массива (экземпляра объекта Map):
- // создание пустого ассоциативного массива
- var arr1 = new Map();
- // создание ассоциативного массива и добавление в него 3 пары "ключ-значение"
- var arr = new Map([
- ['key1', 'value1'],
- ['key2', 'value2'],
- ['key3', 'value3']
- ]);
- Узнать количество элементов в массиве можно осуществить с помощью свойства size:
- arr.size; // 3
- Добавление элемента в массив (в экземпляр объекта Map) осуществляется с помощью метода set:
- // добавить в массив одну пару "ключ-значение"
- arr.set('key4','value4');
- // добавить в массив несколько пар "ключ-значение"
- arr.set('key5','value5');
- arr.set('key6','value6');
- // или так
- arr
- .set('key5','value5')
- .set('key6','value6');
- Если в массиве есть уже такой ключ, то произойдёт установка нового значения, которое будет связано с ним:
- arr.set('key1','new value');
- Получить значение по ключу выполняется с помощью метода get:
- // получить значение, ассоциированное с ключом 'key4'
- arr.get('key4'); // 'value4'
- Проверить есть ли ключ в массиве можно посредством метода has:
- // есть ли в массиве arr ключ key2
- arr.has('key2'); // true
- Удалить из ассоциативного массива (экземпляра объекта Map) элемент по имени ключа можно с помощью метода delete:
- arr.delete('key1'); // true
- Данный метод возвращает true, если данный ключ существовал в массиве, в противном случае он возвращает false.
- if (arr.delete('key1')) {
- console.log('Запись с ключом "key1" удалена из массива!');
- } else {
- console.log('Запись с ключом "key1" не найдена в массиве!');
- }
- Очистить массив (удалить все элементы) можно выполнить с помощью метода clear.
- arr.clear(); // очистим массив arr
- arr.size; // 0 (количество элементов)
- Перебор ассоциативного массива (объекта Map) обычно осуществляется с помощью цикла for...of. При этом итерацию можно организовать по ключам, значениям и записям ([key, values]).
- Перебор ключей можно осуществить посредством итерируемого объекта MapIterator, возвращаемым методом keys:
- for (let key of arr.keys()) {
- console.log(key);
- }
- Для перебора значений можно воспользоваться итерируемым объектом MapIterator, возвращаемым посредством методом values:
- for (let value of arr.values()) {
- console.log(value);
- }
- Перебор записей ассоциативного массива с использованием метода entries:
- for (let pair of arr.entries()) {
- // pair - это массив [key, values]
- console.log(pair[0]); // ключ
- console.log(pair[1]); // значение
- console.log(`Ключ = ${pair[0]}, значение = ${pair[1]}`);
- }
- Данный метод используется по умолчанию в for...of, поэтому его можно опустить:
- for (let pair of arr) {
- console.log(`Ключ = ${pair[0]}, значение = ${pair[1]}`);
- }
- Кроме этого перебрать ассоциативный массив можно с помощью метода forEach.
- arr.forEach(function(value,key) {
- console.log('key = ' + key +', value = ' + value);
- });
- Преобразовать ассоциативный массив (объект Map) в JSON и обратно можно так:
- let arr = new Map([
- ['question', 'Текст вопроса...'],
- ['answer1', 'Ответ 1...'],
- ['answer2', 'Ответ 2...'],
- ]);
- // в JSON
- jsonStr = JSON.stringify([...arr]);
- // из JSON в Map
- mapArr = new Map(JSON.parse(jsonStr));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement