一、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 【二进制数据缓存区的一个对象】

ES6 Set和Map集合(六)的更多相关文章

  1. ES6中的Map集合(与java里类似)

    Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...

  2. 【读书笔记】【深入理解ES6】#7-Set集合和Map集合

    ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...

  3. ES6 Set 和 Map

    ES5 模拟Set 与 Map 集合 Set 常用于检查对象中是否存在某个键名 Map集合常被用于获取已存的信息 所有对象的属性名必须是字符串,那么必须确保每个键名都是字符串类型且在对象中是唯一的 数 ...

  4. ES6中的Set和Map集合

    前面的话 在ES6标准制定以前,由于可选的集合类型有限,数组使用的又是数值型索引,因而经常被用于创建队列和栈.如果需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集 ...

  5. Map集合概述和特点

    A:Map集合概述和特点(Set底层依赖的是Map) 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的(是双列集 ...

  6. ES6学习:Map结构的目的和基本用法

    Map结构的目的和基本用法 JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键.这给它的使用带来了很大的限制.   1 2 3 4 5 6 7 8 ...

  7. Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌

    1.Map集合概述和特点 * A:Map接口概述  * 查看API可以知道:          * 将键映射到值的对象          * 一个映射不能包含重复的键          * 每个键最多 ...

  8. ES6 中的 Map和Set

    集合的概念以及和数组的区别 其实数组也是集合, 只不过数组的索引是数值类型.当想用非数值类型作为索引时, 数组就无法满足需要了. 而 Map 集合可以保存多个键-值对(key-value), Set ...

  9. struts2:OGNL表达式,遍历List、Map集合;投影的使用

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

随机推荐

  1. JS中的实例方法、静态方法、实例属性、静态属性

    一.静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么? 静态方法: function A(){} A.col='red'  //静态属性 A.sayMeS=f ...

  2. Github实战测试情况

    测试情况 很久没有熬夜测试程序了,经过测试,没有复现功能的有echo.葫芦娃.火鸡堂.那周余嘉熊掌将得队.为了交项目而干杯.修!咻咻!.云打印和追光的人.据汪老师反应在现场实践课程中大都能实现的,公平 ...

  3. python中调用httpclient接口的实例代码

    #coding=utf-8 import httplib,urllib #get调用 httpClient=None try: params=urllib.urlencode({'account':' ...

  4. 20190922 「HZOJ NOIP2019 Round #7」20190922模拟

    综述 这次是USACO2019JAN Gold的题目. \(\mathrm{Cow Poetry}\) 题解 因为每句诗的长度一定是\(k\),所以自然而然想到背包. 设\(opt[i][j]\)代表 ...

  5. 四则运算————javaweb版

    1.设计思路: 定义一个类arithmetic,在该类中的定义相关成员,随机产生的题目以及答案用数组承接,在第一个jsp里面用户输入题目数量以及设置做题时间,将这两个数传到第二个jsp页面,在此页面定 ...

  6. 【LG5330】[SNOI2019]数论

    [LG5330][SNOI2019]数论 题面 洛谷 题目大意: 给定集合\(\mathbb {A,B}\) 问有多少个小于\(T\)的非负整数\(x\)满足:\(x\)除以\(P\)的余数属于\(\ ...

  7. MySQL实战45讲学习笔记:第二十九讲

    一.引子 我在第25和27篇文章中,和你介绍了主备切换流程.通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库:而在一主多从架构里,主备切换除了要把 ...

  8. iphone 移动端操作记录

    iPhone和Safari浏览器的后退按钮操作,是直接载入缓存中的页面,不会加载js文件,不会执行ready,onload函数,但是加载html页面会跑pageshow事件,因此有回退动作需要重新加载 ...

  9. 第19课 lambda vs std::bind

    一. std::bind (一)std::bind实现的关键技术 [编程实验]探索bind原理,实现自己的bind函数 #include <iostream> #include <t ...

  10. .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。助力2019中国.NET峰会。

    2019 中国.NET 开发者峰会正式启动 目       录 1.      概述... 2 2.      树莓派硬件配置... 2 3.      软件信息... 3 4.      Raspb ...