ES6中的Set与Map及Iterator迭代器

本文深入探讨了Set和Map两种数据结构的特性与应用,包括Set如何确保成员唯一性,Map如何支持更广泛的数据类型作为键。文章还介绍了这两种数据结构的原型对象属性和方法,如add、delete、has等,并解释了Iterator接口的作用及其在for-of循环中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值