二维码

JavaScript Maps

JavaScript Maps

Map 包含键值对,其中键可以是任何数据类型。

Map 会记住键的原始插入顺序。

基本Maps方法

方法 描述
new Map() 创建新地图
set() 设置映射中键的值
get() 获取 Map 中键的值
delete() 删除键指定的 Map 元素
has() 如果 Map 中存在键,则返回 true
forEach() 为 Map 中的每个键/值对调用一个函数
entries() 返回 Map 中具有 [key, value] 对的迭代器
属性 描述
size 返回 Map 中的元素数

如何创建Maps

您可以通过以下方式创建 JavaScript 地图:

  • 将数组传递给new Map()
  • 创建Map并使用Map.set()

new Map() 方法

您可以通过将数组传递给 new Map() 构造函数来创建 Map

1
2
3
4
5
6
// Create a Map  
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);


set()方法

您可以使用set()方法向 Map 添加元素:

1
2
3
4
5
6
7
// Create a Map  
const fruits = new Map();

// Set Map Values
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);

set()方法还可用于更改现有 Map 值:

1
fruits.set("apples", 200);


get()方法

get()方法获取 Map 中键的值:

1
fruits.get("apples");    // Returns 500  


size 属性

size属性返回 Map 中的元素数:

1
fruits.size;


delete()方法

delete()方法删除 Map 元素:

1
fruits.delete("apples");


has()方法

如果 Map 中存在键,则has()方法返回 true:

1
fruits.has("apples");

:试试这个:
1
2
fruits.delete("apples");  
fruits.has("apples");


JavaScript 对象与Maps

JavaScript 对象和 Maps 之间的区别:

对象 Map
Iterable 不可直接迭代 可直接迭代
Size 没有 size 属性 具有 size 属性
Key Types 键必须是字符串(或符号) 键可以是任何数据类型
Key Order 钥匙顺序不整 按键按插入顺序排序
Defaults 具有默认键 没有默认密钥

forEach()方法

forEach()方法为 Map 中的每个键/值对调用一个函数:

1
2
3
4
5
// List all entries  
let text = "";
fruits.forEach (function(value, key) {
  text += key + ' = ' + value;
})


entries()方法

entries()方法返回一个迭代器对象,其中包含 Map 中的 [key, values]:

1
2
3
4
5
// List all entries  
let text = "";
for (const x of fruits.entries()) {
  text += x;
}


浏览器支持

除 Internet Explorer 外,所有浏览器都支持 JavaScript Maps:

Chrome Edge Firefox Safari Opera