ES6 Map和Set

JavaScript的对象(Object),传统上只能用字符串作为键,但是理论上Number和其他数据类型作为键也是合理的。

为了解决这个问题,最新的ES6规范引入了新的数据类型:Map 和 Set。 

Map


Map是一组键值对的结构,具有极快的查找速度。它类似于对象,也是键值对的集合。但是‘键’的范围不限于字符串,各种类型的值都可以当做键。

初始化Map需要一个二维数组,或者直接初始化一个空Map。

var o = {'year':2018}
var m = new Map([['name',18],[100,20],[o,2017]]);
m.get('name');//18
m.get('100');//20
m.get(o);//2017

Map结构的实例有以下属性和方法。

const map =new Map();
map.set('foo',true);  set方法设置key对应的键值value,返回整个Map结构。如果已经有值,则会被覆盖。返回当前的Map对象。
map.get('foo');//true  get方法获取 key对应的的键值,如果找不到则返回undefined。
map.get('bar');//undefined
map.size //2   size方法返回Map结构的成员总数。
map.has('foo');//true    has方法返回布尔值,判断某个键是否存在Map对象中
map.delete('foo');//true   delete 删除某个键,返回布尔值,判断是否删除成功。
map.clear(); 清除所有的Map结构的所有成员,没有返回值

Set


 Set和Map 类似,是一组key的集合。 类似于数组,但是成员都是唯一的。没有重复的值。

要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set

var s1 = new Set();
var s2 = new Set([1,2,3,3,'2']); 
console.log(s2);//{1,2,3,'2'};

默认返回的是一个对象{},包含了添加的成员。转换为数组直接使用...运算符即可。

var s = new Set([1,2,2,3,3,4,5,'2']);
[...s]  //[1,2,3,4,5,'2'];

Set结构有以下属性和方法。

属性:

Set.prototype.constructor:构造函数,默认就是Set函数。

Set.prototype.size :返回Set实例的成员总数。

操作方法:

add(value):添加某个值,返回Set结构本身。

delete(value):删除某个值,返回一个布尔值,表示删除成功。

has(value):判断值是否存在,返回布尔值。

clear(); 清除所有成员,没有返回值。

s.add(1).add(2).add(3);
s.size // 3

s.has(1); //true
s.has(2); //true
s.has(3);//true
s.delete(2);//true
s.has(2);//false
s.has(4); //false

 本文主要是总结一下Map和Set的简单使用语法,以便加深理解和查阅,其中包含一些细节和方法没有加入,以后学习跟进。

posted @ 2017-08-30 14:55  X·Man  阅读(345)  评论(0)    收藏  举报