JavaScript - Map() 构造函数



在 JavaScript 中,Map 是一个内置对象,它允许我们存储 'key-value' 对,其中 key 和 values 可以是任何数据类型。在 Map 中,两个或多个键不能相同或相同,这意味着所有键都必须是唯一的。

Map() 构造函数(constructor)用于创建新的 Map 对象。可以使用 new 关键字调用它。当使用 new 关键字调用时,它会创建一个新的 Map 对象。如果未提供任何参数,则会创建一个空的 Map 对象。

Map() 构造函数(constructor)只能使用 new 关键字构造。如果我们尝试在没有 'new' 的情况下调用它,则会抛出 TypeError。

语法

以下是 JavaScript Map() 构造函数的语法 -


 new Map()
 new Map(iterable)

参数

此构造函数接受可选参数。下面描述相同 -

  • iterable - 包含键值对的可迭代对象(例如数组或其他 Map)。每个键值对都是一个数组,其中包含两个元素:键和值。

返回值

初始化 Map 构造函数后,将返回一个新的 Map 对象。

示例 1

在下面的示例中,我们将使用 Map() 构造函数创建新的 Map 对象 -


<html>
<body>
   <script>
      const myMap = new Map([
         [1, 'apple'],
         [2, 'banana'],
         [3, 'cherry']
      ]);
   </script>
</body>
</html>

上面的 Map 对象包含三个键值对。键是 '1'、'2' 和 '3',对应的值分别为 'apple'、'banana' 和 'cherry'。

示例 2

我们还可以在使用 set() 方法创建 Map 对象后将其添加键值对,如下例所示 -


<html>
<body>
   <script>
      const myMap = new Map();
      myMap.set(1, 'apple');
      myMap.set(2, 'banana');
      myMap.set(3, 'cherry');
   </script>
</body>
</html>

“myMap” 对象将包含提供的三个键值对作为元素。

示例 3

我们可以使用 get() 方法访问与 Map 对象中的键关联的值,如以下示例所示 -


<html>
<body>
   <script>
      const myMap = new Map();
      
      myMap.set(1, 'apple');
      myMap.set(2, 'banana');
      myMap.set(3, 'cherry');
      
      document.write(myMap.get(1), "<br>");
      document.write(myMap.get(2), "<br>");
      document.write(myMap.get(3));
   </script>
</body>
</html>

上面的程序将打印与 Map 对象中键 '1'、'2' 和 '3' 关联的 “values”。

示例 4

我们还可以使用 has() 方法检查 Map 对象中是否存在特定键,如下例所示 -


<html>
<body>
   <script>
      const myMap = new Map();      
      myMap.set(1, 'apple');
      myMap.set(2, 'banana');
      myMap.set(3, 'cherry');      
      document.write(myMap.has(2));
   </script>
</body>
</html>

它返回 'true',因为键 '2' 存在于 Map 对象中。

示例 5

在此示例中,我们使用 delete() 方法从 Map 对象中删除键值对 -


<html>
<body>
   <script>
      const myMap = new Map();
      myMap.set(1, 'apple');
      myMap.set(2, 'banana');
      myMap.set(3, 'cherry');
      document.write(myMap.delete(2), "<br>"); //true
      document.write(myMap.has(2)); //false
   </script>
</body>
</html>

上述程序从 Map 对象中删除与键 '2' 关联的键值对。