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的简单使用语法,以便加深理解和查阅,其中包含一些细节和方法没有加入,以后学习跟进。

浙公网安备 33010602011771号