Map基础

简介: MAP基础map不同于普通的对象,普通对象的键值对,键只能是数值、字符串或者符号,而map的键可以是任意类型的值,包括对象、函数、数组等。

MAP基础

map不同于普通的对象,普通对象的键值对,键只能是数值、字符串或者符号,而map的键可以是任意类型的值,包括对象、函数、数组等。

创建map

  • 使用Map构造函数
    const map1 = new Map();

我们可以在使用Map构造函数创建的时候,顺带进行初始化:

const map2 = new Map([
  ['name', '张三'],
  ['age', 18]
]);
复制代码

Map常见方法

  • set(key, value)设置键值对
    map.set(key, value);

在map初始化之后,我们使用set方法,可以往map中添加键值对。

const m = new Map();
m.set('name', '海绵宝宝');// 添加了一个键值对
复制代码
  • has(key)判断是否存在某个键
    map.has(key);

在实际开发中,我们有时候需要查询,map里面是否存在这样一个键,此时,我们就需要用到has方法:

const m = new Map();
m.set('name', '海绵宝宝');
alert(m.has('name'));// true
复制代码

若是存在,返回true,否则返回false

  • get(key)获取键值对

在上面我们知道了如何查询一个元素在map中是否存在,那么,如果我们想要获取这个元素的值,我们就需要使用get方法:

map.get(key);
复制代码

get方法:如果存在,返回对应的值,否则返回undefined

const m = new Map();
m.set('name', '海绵宝宝');
alert(m.get('name'));// 获取到了键值对的值 海绵宝宝
复制代码
  • delete(key)删除某个键值对
    map.delete(key);

前面我们知道了可以增加、查询、判断是否存在某个键,那么如何删除呢?使用delete方法。

const m = new Map();
m.set('name', '海绵宝宝');
m.delete('name');// 删除name键值对
alert(m.has('name'));// false 
复制代码

在删除之后,我们再次查询,发现已经不存在了。

  • clear()清空map
    map.clear();

若是我们想直接清空整个map,可以使用clear方法。

const m = new Map();
m.set('name', '海绵宝宝');
m.clear();// 清空map
alert(m.has('name'));// false
复制代码

使用clear之后,这个map里面的所有内容将会被删除,我们再次查询,发现已经不存在了。

如何选择

前面我们说道,map和object的区别有在于键:

  • map的键可以是任意类型的值,而object的键只能是数值、字符串或者符号。

那么在实际开发中,我们如何来选择呢?

  1. 内存

在固定内存大小的情况下,map可以比object更好的存储数据(map可以多储存50%的键值对)。

  1. 查找

两者差别不大,在键值对较少的情况下,object的速度也快一点,如果object的键是当做数组的索引一样使用的话,那么object的速度会更快。

  1. 插入

map比object稍微快一点,但是差别不大,如果是插入大量的键值对,那么map的速度会更快。

  1. 删除

在大多数浏览器中,map的删除速度更快,如果涉及大量删除键值对的情况,那么毫无疑问map是首选。


相关文章
|
Java
【Java基础】map的遍历方式和map.forEach的使用
【Java基础】map的遍历方式和map.forEach的使用
123 0
Object转Map的两种方式
在平时的工作中,有时候需要将Object转换成Map。笔者这里总结了两种将Object转成Map的方式方法。
6763 0
|
6月前
|
程序员
Map.Entry 类使用简介
Map.Entry 类使用简介
53 1
|
5月前
|
JSON JavaScript API
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
134 0
|
6月前
|
存储 JavaScript 前端开发
Object和Map的区别
Object和Map的区别
|
7月前
|
存储 算法 安全
Map中的那些事
Map中的那些事
73 0
|
7月前
|
算法 C++ Python
map的使用(C++)
map的使用(C++)
77 0
|
存储 Java 开发者
Map.Entry 内部接口|学习笔记
快速学习 Map.Entry 内部接口
112 0
Map.Entry 内部接口|学习笔记
HashMap中套map的作用
HashMap中套map的作用
90 0