1、Set
基本用法
ES6提供了新的数据结构Set。她类似数组,但是成员的值是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
const set=new Set([1,2,3,2]);
[...set] //[1,2,3]
set.size //3
Set实例的属性和方法
属性
Set.prototype.constructor: 构造函数,默认就是Set函数
Set.prototype.size: 返回Set实例的成员总数
方法
操作方法
Set.prototype.add(value) :添加某个值,返回Set结构本身
Set.prototype.delete(value) :删除某个值,返回一个布尔值,表示是否成功
Set.prototype.has(value) :返回一个布尔值,表示该值是否为Set的成员
Set.prototype.clear() :清除所有成员,没有返回值
看看在判断是否包含一个键上面,Object结构和Set结构的写法不同
//对象的写法
const properties={
'width': 1,
'height': 1
}
if(properties[someName]){
// do something
}
//Set的写法
const properties=new Set();
properties.add('width');
properties.add('height');
if(properties.has(someName)){
// do something
}
Array.from方法可以将Set结构转为数组
const items=new Set([1,2,3,4,5]);
const array=Array.from(items);
遍历方法
Set.prototype.keys(): 返回键名的遍历器
Set.prototype.values(): 返回键值的遍历器
Set.prototype.entries(): 返回键值对的遍历器
Set.prototype.forEach(): 使用回调函数遍历每个成员
因为Set结构没有键名,只有键值所以keys和values方法的行为一致
2、WeakSet
3、Map
含义和基本用法
Javascript的对象(Object),本质上是键值对的集合(hash),但是传统上只能用字符串当作键。为了解决这个问题,Es6提供了Map数据结构。类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说object结构提供了“字符串-值”的对应,Map提供了“值-值”的对应。