ES6 Map类型简述(类似对象的一种数据结构 键可以是各种类

2018-10-16  本文已影响0人  梵仇不是大侠

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

上面代码使用 Map 结构的set方法,将对象o当作m的一个键,然后又使用get方法读取这个键,接着使用delete方法删除了这个键。

作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

上面代码在新建 Map 实例时,就指定了两个键name和age。 Map构造函数接受数组作为参数,实际上执行的是上面的算法。  

不仅仅是数组,任何具有 Iterator 接口(可遍历)、且每个成员都是一个双元素的数组的数据结构 都可以当作Map构造函数的参数。这就是说,Set和Map都可以用来生成新的 Map

第一个demo是Set作为参数 第二个是Map作为参数 都生成了新的Map

Map多次赋值 后一次的值覆盖前一次的值。如果读取一个未知的键,则返回undefined。

Map多次赋值 后一次的值覆盖前一次的值

Map的实例属性和操作方法:

1.size属性 (返回Map结构下成员总个数)

size属性

2.set(key,value) set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。

key有值 值被更新变为ccc

3.get(key) get方法读取key对应的键值,如果找不到key,返回undefined。

4.has(key) has方法返回一个布尔值(有就是true 没有就是false),表示某个键是否在当前 Map 对象之中 。

5.delete(key) delete方法删除某个键,返回true。如果删除失败,返回false。

6.clear() clear方法清除所有成员,,没有返回值 这个就不写例子了。

Map的遍历方法:


注意的是,Map的遍历顺序就是插入顺序

Map 结构转为数组结构,比较快速的方法是使用扩展运算符(...)。


Map转换为数组结构用 ...扩展运算符

数组转化为Map,直接将数组带入Map即可。


数组转Map

Map可以无损的转换对象。

Map转换对象

Map转换JSON 分两种情况:

一种情况是,Map 的键名都是字符串,这时可以选择转为对象 JSON(先把Map转成对象再转JSON);

第二种情况,Map 的键名有非字符串,这时可以选择转为数组 JSON(先把Map转成数组再转JSON);


Map转成对象Json 先转对象再转JSON Map通过扩展运算符..转换为数组 在转换为数组JSON
上一篇 下一篇

猜你喜欢

热点阅读