ES6中的Set与Map及Iterator迭代器

Set数据结构

类似于数组,但成员的值是唯一的,没有重复的值

  • 去除数组中的重复成员
    [...new Set(arr)]

  • Set原型对象的属性

  1. constructor 返回当前实例的构造函数,默认就是Set
  2. size 返回Set实例的成员总数
  • Set原型对象的方法
  1. add(value) 添加某个值,返回Set结构本身
  2. delete(value) 删除某个值,返回一个布尔值,表示删除是否成功
  3. has(value) 判断该值是否是Set成员,返回一个布尔值
  4. clear() 清除所有成员,没有返回值
  5. keys() 返回键名的Iterator遍历器对象
  6. values() 返回键值的Iterator遍历器对象
  7. entries() 返回键值对的Iterator遍历器对象
  8. forEach() 使用回调函数遍历每一个成员

Map数据结构

类似于对象,是键值对的集合,但是的范围包括字符串及其他各种类型的数据(包括对象)
也可接受一个二维数组作为参数,该数组的成员是一个表示键值对的数组

  • Map原型对象的属性:
  1. constructor 构造函数,默认为Map
  2. size 返回Map结构的成员总数
  • Map原型对象的方法:
  1. set(key,value) 设置键名及键值,返回整个Map结构。如果键名key存在,键值会被更新,否则就新生成该键
  2. get(key) 读取对于的键值,如果找不到,返回undefined
  3. has(key) 判断该键是否是Map对象成员,返回一个布尔值
  4. delete(key) 删除某个键,返回一个布尔值
  5. clear() 清除所有成员,没有返回值
  6. keys() 返回键名的Iterator迭代器对象
  7. values() 返回键值的Iterator迭代器对象
  8. entries() 返回键值对的Iterator迭代器对象
  9. forEach() 使用回调函数遍历每一个成员

Iterator 遍历器/迭代器

是一种接口,为各种不同的数据结构提供统一的访问机制,即for-of循环。
任何数据结构,只要部署了Iterator接口,就可以完成遍历操作。
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是可遍历的(iterable)。

  • 作用:
  1. 为各种数据结构,提供一个统一的,简便的访问接口
  2. 使得数据结构的成员能够按照某种次序排列
  3. 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接口的数据结构如下:
  1. Set
  2. Map
  3. Array
  4. String
  5. 函数的arguments对象
  6. NodeList对象

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐