一、Set集合
创建Set实例:
let set = new Set();
1、特性:
a、Set本身是一个构造函数,用来生成Set数据结构【类比数组结构】
b、Set函数可以接受具有Iterable接口的数据结构作为参数
c、Set集合中的成员是唯一的【即不可重复】

2、Set实例的相关属性及方法
a、属性
Set.prototype.constructor:构造函数,默认就是Set函数
Set.prototype.size:返回Set实例的元素的个数    【set.size】

b、方法
add(value):添加某个值,返回Set集合本身
delete(value):删除某个值,返回boolean类型
has(value):返回一个布尔值,表示该值是否在集合中
clear():清除所有成员,没有返回值

keys()    【返回set实例中所有值组成的迭代器对象[和下面的values()是等同的]】
values()    【返回set实例中所有值组成的迭代器对象】
entries()    【返回set实例键值对组成的迭代器对象,对象里面存放的是键值对形式的数组】
forEach(function(value,key,set){})    【使用回调函数遍历迭代器对象中的每个成员】

3、去除Array中重复的元素
eg:
    let arr = [1,2,3,1,3];
    console.log([...new Set(arr)]);    //[1,2,3]

二、Map集合
创建Map实例:
let map = new Map();
1、特性:
a、Map类似于对象,也是键值对的集合
b、Map中的“键”的范围不限于字符串【Object中键的表现形式】,各种类型的值(包括对象)都可以当作键
c、Map可以接受一个数组作为参数,该数组的成员是一个表示键值对的数组【可以接受一个二维数组:entries(obj)】

2、Map实例的相关属性及方法
a、属性
Map.prototype.size    返回Map实例的元素的个数 【map.size】

b、方法
set(key, value)        【添加或更新对应key的value值,返回Map集合自身】(集合有key值,更新;没有,添加)
get(key)    【获取key对应的value值,如果找不到key,返回undefined】
has(key)    【has方法返回一个布尔值,表示某个键是否在当前Map对象之中】
delete(key)    【删除key的元素,返回boolean类型】
clear()    【清除所有成员,没有返回值】clear()

keys()    【返回集合中所有键名组成的迭代器对象】
values()    【返回集合中所有键值组成的迭代器对象】
entries()    【返回集合中所有键值对数组组成的迭代器对象】
forEach(function(value,key,Map){})    【使用回调函数遍历迭代器对象中的每个成员】

三、Iterator (遍历器)
1、特性:
a、Iterator是一种接口,为各种不同的数据结构,提供统一的访问机制
b、任何数据结构只要部署Iterator接口,就可以完成遍历操作

2、作用:
a、为各种数据结构,提供一个统一的、简便的访问接口
b、使得数据结构的成员能够按某种次序排列
c、Iterator接口主要供ES6中的新的遍历命令for...of循环使用

3、Iterator 的遍历过程
a、迭代器对象调用next()方法依次获取到对象中的下一个元素遍历对象,并返回一个对象{value:element,done:boolean}
b、a中返回的对象value为获取的元素,done为下一个元素是否存在,若对象下一个元素不存在则{ value: undefined, done: true }
eg:

    var set = new Set(['nzc',18]);
let entries = set.entries();
console.log(entries.next()); //{ value: [ 'nzc', 'nzc' ], done: false }
console.log(entries.next()); //{ value: [ 18, 18 ], done: false }
console.log(entries.next()); //{ value: undefined, done: true }

4、获取Iterator对象
var iterator = iterObj[Symbol.iterator]();

5、原生具备 Iterator 接口的数据结构
Array    【数组】
String    【字符串】
函数的arguments对象    【函数参数组成的类数组对象】
NodeList对象    【元素节点类数组对象】
Map    【Map集合】
Set    【Set集合】
TypedArray 【二进制数据缓存区的一个对象】

最新文章

  1. CUtilityCode
  2. FreeBSD 配置
  3. WCF Data Service
  4. 导入module
  5. MySQL里面的子查询实例
  6. (转)mongodb常用命令脚本化-自动化运维
  7. Attributes(2): Displaying attributes for a class.(显示类属性)
  8. Win7 JBOSS的下载安装、环境变量配置以及部署
  9. 博客已转移至 http://blog.yemou.net/
  10. 用 fhq_Treap 实现可持久化平衡树
  11. html+css常用小笔记(持续更新)
  12. Accordion CodeForces - 1101B (实现)
  13. 初探 objc_msgSend函数
  14. PHP开发者应了解的24个库
  15. YQCB冲刺第二周第二天
  16. ArcGIS中地图导出格式比较(转)
  17. linux c编程:互斥锁
  18. 在actionbar中加入item的方法
  19. UVA215 Spreadsheet
  20. 通过RHN网站给RHEL打补丁

热门文章

  1. JS高阶---语句分号相关
  2. 2018710101021-王方-《面向对象(java)程序设计》第十一周学习总结
  3. pip安装指定版本的程序的命令
  4. 修改woocommerce列表产品显示数量
  5. python json解析字符串出错该如何排查问题
  6. 【Spring Data JPA篇】项目环境搭建(一)
  7. JDOJ 1789: 高精度A+B
  8. Jmeter压力并发测试
  9. VNC远程登陆树莓派3(包括开机启动)
  10. JavaScript对象分类