Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. Объект Map (ассоциативный массив)
  2. Тип данных Map предназначен для создания ассоциативных массив (пар «ключ-значение»). В качестве ключа можно использовать как примитивные, так и ссылочные типы данных. Это одно из основных отличий от ассоциативных массивов как объектов, у которых в качестве ключа можно использовать только строки.
  3.  
  4. Пример создание ассоциативного массива (экземпляра объекта Map):
  5.  
  6. // создание пустого ассоциативного массива
  7. var arr1 = new Map();
  8.  
  9. // создание ассоциативного массива и добавление в него 3 пары "ключ-значение"
  10. var arr = new Map([
  11. ['key1', 'value1'],
  12. ['key2', 'value2'],
  13. ['key3', 'value3']
  14. ]);
  15. Узнать количество элементов в массиве можно осуществить с помощью свойства size:
  16.  
  17. arr.size; // 3
  18. Добавление элемента в массив (в экземпляр объекта Map) осуществляется с помощью метода set:
  19.  
  20. // добавить в массив одну пару "ключ-значение"
  21. arr.set('key4','value4');
  22.  
  23. // добавить в массив несколько пар "ключ-значение"
  24. arr.set('key5','value5');
  25. arr.set('key6','value6');
  26. // или так
  27. arr
  28. .set('key5','value5')
  29. .set('key6','value6');
  30. Если в массиве есть уже такой ключ, то произойдёт установка нового значения, которое будет связано с ним:
  31.  
  32. arr.set('key1','new value');
  33. Получить значение по ключу выполняется с помощью метода get:
  34.  
  35. // получить значение, ассоциированное с ключом 'key4'
  36. arr.get('key4'); // 'value4'
  37. Проверить есть ли ключ в массиве можно посредством метода has:
  38.  
  39. // есть ли в массиве arr ключ key2
  40. arr.has('key2'); // true
  41. Удалить из ассоциативного массива (экземпляра объекта Map) элемент по имени ключа можно с помощью метода delete:
  42.  
  43. arr.delete('key1'); // true
  44. Данный метод возвращает true, если данный ключ существовал в массиве, в противном случае он возвращает false.
  45.  
  46. if (arr.delete('key1')) {
  47. console.log('Запись с ключом "key1" удалена из массива!');
  48. } else {
  49. console.log('Запись с ключом "key1" не найдена в массиве!');
  50. }
  51. Очистить массив (удалить все элементы) можно выполнить с помощью метода clear.
  52.  
  53. arr.clear(); // очистим массив arr
  54. arr.size; // 0 (количество элементов)
  55. Перебор ассоциативного массива (объекта Map) обычно осуществляется с помощью цикла for...of. При этом итерацию можно организовать по ключам, значениям и записям ([key, values]).
  56.  
  57. Перебор ключей можно осуществить посредством итерируемого объекта MapIterator, возвращаемым методом keys:
  58.  
  59. for (let key of arr.keys()) {
  60. console.log(key);
  61. }
  62. Для перебора значений можно воспользоваться итерируемым объектом MapIterator, возвращаемым посредством методом values:
  63.  
  64. for (let value of arr.values()) {
  65. console.log(value);
  66. }
  67. Перебор записей ассоциативного массива с использованием метода entries:
  68.  
  69. for (let pair of arr.entries()) {
  70. // pair - это массив [key, values]
  71. console.log(pair[0]); // ключ
  72. console.log(pair[1]); // значение
  73. console.log(`Ключ = ${pair[0]}, значение = ${pair[1]}`);
  74. }
  75. Данный метод используется по умолчанию в for...of, поэтому его можно опустить:
  76.  
  77. for (let pair of arr) {
  78. console.log(`Ключ = ${pair[0]}, значение = ${pair[1]}`);
  79. }
  80. Кроме этого перебрать ассоциативный массив можно с помощью метода forEach.
  81.  
  82. arr.forEach(function(value,key) {
  83. console.log('key = ' + key +', value = ' + value);
  84. });
  85. Преобразовать ассоциативный массив (объект Map) в JSON и обратно можно так:
  86.  
  87. let arr = new Map([
  88. ['question', 'Текст вопроса...'],
  89. ['answer1', 'Ответ 1...'],
  90. ['answer2', 'Ответ 2...'],
  91. ]);
  92. // в JSON
  93. jsonStr = JSON.stringify([...arr]);
  94. // из JSON в Map
  95. mapArr = new Map(JSON.parse(jsonStr));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement