JavaScript -- map

152 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

今天总结一下ES6新增类型 -- map。map主要用于实现"键/值"形式的存储。

基本API

API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。

初始化

给构造函数传入可迭代对象(允许for...of循环),必须包含的是键值对数组。对象中的每个 键值对都会按照迭代顺序插入到新映射实例。这里可以理解为,object虽然也是键值对,但是键值对在前在后没有区别,但是map的键值对是严格按照顺序排列。

 const m = new Map([
     ["key1", "value1"],
     ["key2", "value2"],
     ["key3", "value3"],
 ])
 console.log(m);  
 // {'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'}
 

image.png

image.png

set()

作用:添加键值对

 const names = new Map();

 names.set("配音演员", "林予曦");
 names.set("配音演员1", "倒霉死勒");
 console.log(names); 

image.png

可以连接创建实例和set方法的初始化:

 const names = new Map().set("配音演员", "倒霉死勒");
 console.log(names);

image.png

get()

作用:查询对应的 => 返回是值

console.log(names.get("配音演员"));

image.png

has()

作用:查询键参数是否有对应的值 => 返回是的布尔值(true或false)

 console.log(names.has("配音演员")); // true
 console.log(names.has("配音演员2")); // false

image.png

delete()

作用:只删除指定的键值对

names.delete("配音演员");
console.log(names);

image.png

clear()

作用:清除实例中的所有键值对

 names.clear();
 console.log(names);

image.png

顺序和迭代

map严格按照键值对的插入顺序来排列元素,因此可以根据插入的顺序来执行迭代操作。

 for (let item of names.entries()) {
      console.log(item);
 }

map映射实例会提供一个迭代器(iterator),以插入顺序生成键值对形式的数组。通过entries()方法获得迭代器。 image.png