Set
Set结构是ES6提供的新数据格式,类似于数组,但是没有重复值
Set结构的实例属性
属性名 | 描述 |
---|---|
constructor | 构造函数,默认就是Set函数 |
size | 返回Set实例的成员总数 |
Set结构的实例方法
方法名 | 参数 | 描述 |
---|---|---|
add | value | 添加某个值,返回 Set 结构本身 |
delete | value | 删除某个值,返回一个布尔值,表示删除是否成功 |
has | value | 返回一个布尔值,表示该值是否为Set的成员 |
clear | – | 清除所有成员,没有返回值 |
Set结构的实例遍历器
方法名 | 描述 |
---|---|
keys() | 返回键名的遍历器 |
values() | 返回键值的遍历器 |
entries() | 返回键值对的遍历器 |
forEach() | 使用回调函数遍历每个成员 |
Map
Map结构是ES6提供的新的数据结构,和对象类似也是键值对的集合,但是键的范围不限于字符串,各种类型的值都可以当做键
Map结构的实例属性
属性名 | 描述 |
---|---|
size | 返回 Map 结构的成员总数 |
Map结构的实例方法
方法名 | 参数 | 描述 |
---|---|---|
set | set(key, value) | 设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键 |
get | key | 读取key对应的键值,如果找不到key,返回undefined |
has | key | 返回一个布尔值,表示某个键是否在当前 Map 对象之中 |
delete | key | 删除某个键,返回true。如果删除失败,返回false |
clear | – | 清除所有成员,没有返回值 |
Map结构的实例遍历器
方法名 | 描述 |
---|---|
keys() | 返回键名的遍历器 |
values() | 返回键值的遍历器 |
entries() | 返回键值对的遍历器 |
forEach() | 使用回调函数遍历每个成员 |
注意
Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。
如果 Map
的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map
将其视为一个键,比如0
和-0
就是一个键,布尔值true
和字符串true
则是两个不同的键。另外,undefined
和null
也是两个不同的键。虽然NaN
不严格相等于自身,但 Map
将其视为同一个键。