欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

JavaScript Map 对象 有大用 有大大用

JavaScript Map 对象

Map 对象存有键值对,其中的键可以是任何数据类型。

Map 对象记得键的原始插入顺序。

Map 对象具有表示映射大小的属性。

基本的 Map() 方法

MethodDescription
new Map()创建新的 Map 对象。
set()为 Map 对象中的键设置值。
get()获取 Map 对象中键的值。
entries()返回 Map 对象中键/值对的数组。
keys()返回 Map 对象中键的数组。
values()返回 Map 对象中值的数组。

Map() 属性

PropertyDescription
size获取 Map 对象中某键的值。

创建 Map 对象

能够使用对象作为键是 Map 的一个重要特性。

实例

// 创建对象
const apples = {name: 'Apples'};
const bananas = {name: 'Bananas'};
const oranges = {name: 'Oranges'};

// 创建新的 Map
const fruits = new Map();

// Add new Elements to the Map
fruits.set(apples, 500);
fruits.set(bananas, 300);
fruits.set(oranges, 200);

亲自试一试

您可以将 Array 传递给 new Map() 构造函数:

实例

// 返回
const apples = {name: 'Apples'};
const bananas = {name: 'Bananas'};
const oranges = {name: 'Oranges'};

// 创建新的 Map
const fruits = new Map([;
  [apples, 500],
  [bananas, 300],
  [oranges, 200]
]);

亲自试一试

获取键的值

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

实例

fruits.get(apples);    // 返回 500

亲自试一试

Remember: The key is an object (apples), not a string ("apples"):

实例

fruits.get("apples");  // 返回 undefined

亲自试一试

其他 Map() 方法

方法描述
clear()删除 Map 中的所有元素。
delete()删除由键指定的元素。
has()如果键存在,则返回 true。
forEach()为每个键/值对调用回调。

Map() 属性

属性描述
size获取 Map 中键的值。

Map.size

Map.size 返回 Map 中元素的数量:

实例

fruits.size;

亲自试一试

Map.delete()

Map.delete() 删除 Map 元素:

实例

fruits.delete(apples);

亲自试一试

Map.clear()

Map.clear() 从 Map 中移除所有元素:

实例

fruits.clear();

亲自试一试

Map.has()

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

实例

fruits.has(apples);

亲自试一试

JavaScript 对象 vs Map

JavaScript 对象和 Map 之间的差异:


对象Map
Size对象没有 size 属性Maps 有 size 属性
键类型对象键必须是字符串(或符号)Map 键可以是任何数据类型
键顺序对象键没有很好地排序Map 键按插入排序
默认对象有默认键Map 没有默认键

浏览器支持

除了 Internet Explorer 之外,所有主要浏览器都支持 JavaScript Map:

ChromeIEFirefoxSafariOpera
ChromeEdgeFirefoxSafariOpera



 来自  https://www.w3school.com.cn/js/js_object_maps.asp


普通分类: