Set数据结构
类似于数组,但成员的值是唯一的,没有重复的值
-
去除数组中的重复成员
[...new Set(arr)]
-
Set原型对象的属性
- constructor 返回当前实例的构造函数,默认就是Set
- size 返回Set实例的成员总数
- Set原型对象的方法
- add(value) 添加某个值,返回Set结构本身
- delete(value) 删除某个值,返回一个布尔值,表示删除是否成功
- has(value) 判断该值是否是Set成员,返回一个布尔值
- clear() 清除所有成员,没有返回值
- keys() 返回键名的Iterator遍历器对象
- values() 返回键值的Iterator遍历器对象
- entries() 返回键值对的Iterator遍历器对象
- forEach() 使用回调函数遍历每一个成员
Map数据结构
类似于对象,是键值对的集合,但是键的范围包括字符串及其他各种类型的数据(包括对象)
也可接受一个二维数组作为参数,该数组的成员是一个表示键值对的数组
- Map原型对象的属性:
- constructor 构造函数,默认为Map
- size 返回Map结构的成员总数
- Map原型对象的方法:
- set(key,value) 设置键名及键值,返回整个Map结构。如果键名key存在,键值会被更新,否则就新生成该键
- get(key) 读取对于的键值,如果找不到,返回undefined
- has(key) 判断该键是否是Map对象成员,返回一个布尔值
- delete(key) 删除某个键,返回一个布尔值
- clear() 清除所有成员,没有返回值
- keys() 返回键名的Iterator迭代器对象
- values() 返回键值的Iterator迭代器对象
- entries() 返回键值对的Iterator迭代器对象
- forEach() 使用回调函数遍历每一个成员
Iterator 遍历器/迭代器
是一种接口,为各种不同的数据结构提供统一的访问机制,即for-of循环。
任何数据结构,只要部署了Iterator接口,就可以完成遍历操作。
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是可遍历的(iterable)。
- 作用:
- 为各种数据结构,提供一个统一的,简便的访问接口
- 使得数据结构的成员能够按照某种次序排列
- Iterator主要供ES6新提出的遍历命令for-of循环使用
- next()方法
第一次调用Iterator的next()方法,可以将指针指向数据结构的第一个成员
第二次调用next()方法,指针就指向数据结构的第二个成员
不断调用Iterator的next()方法,直到它指向数据结构的结束位置
console.log(values.next());//{ value: 1, done: false }
console.log(values.next());//{ value: 'hello', done: false }
console.log(values.next());//{ value: undefined, done: true }
可以使用for-of循环来遍历Iterator对象,或者在while语句中使用done属性来遍历
- 原生JS具备Iterator接口的数据结构如下:
- Set
- Map
- Array
- String
- 函数的arguments对象
- NodeList对象