set数据结构

ES6提供了一个新的数据结构,Set,Set和Array数组相似,但是Set里没有重复的数据,可以说是一个值的集合。

同时,Set数据结构有以下属性和方法:

  • size:返回成员总数
  • add(value):添加某个值
  • delete(value):删除某个值
  • has(value):返回一个布尔值,表示Set中是否有该成员
  • clear():清除所有成员
  • entries():返回一个键值对的遍历器
  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • forEach():遍历每一个成员
var s = new Set();
s.add(1).add(2).add(2);//这里添加了两次2
alert(s.length); //2
s.has(1); //true
s.has(2); //true
s.has(3); //false s.delete(2);
s.has(2); //false

WeakSet

WeakSet和Set有很多一样的地方,存的也是不同的值,但是他的成员必须是对象类型的值。

let ws = new WeakSet([{"car":"van"}])
console.log(ws)

同样,WeakSet数据结构也提供了add() delete() has()方法,作用域Set一样,但是要注意的是,WeakSet结构不能便利,所以没有keys() entries() values() forEach()方法

Map

Map对象类似于Object对象,但是键的范围不再限制于字符串,甚至对象也可当做键

var map = new Map();
var map2 = new Map([
["car","van"]
])
var o = {"car":"tractor"};
map.set(o,"content")
console.log(map.get(o))
console.log(map2.get("car"))

我们可以发现,在Map的构造函数中传入参数时,参数是一个二维数组,数组的每一个元素是一个键值对的数组,即car是键,van是键值,也可以使用set方法增加一个键值对,第一个参数是键名,第二个参数是键值。除了set方法,Map结构还有其他的方法

  • size:返回成员总数
  • set(key, value):设置一个键值对
  • get(key):读取一个键值
  • has(key):返回一个布尔值,表示某个键是否在结构中
  • delete(key):删除某个键
  • clear():清除所有成员
  • entries():返回实例的键值对遍历器
  • keys():返回实例所有键名的遍历器
  • values():返回实例所有键值的遍历器
  • forEach():遍历每一个键值对

WeakMap数据类型

WeakMap与Map相似,但是WeakMap结构的键名只支持引用类型的数据,像数组、对象、函数

其基本用法与Map相似,只是键名的类型有所限制,而且不支持遍历,也不支持clear()方法

WeakMap和WeakSet结构一样,其键名中的引用类型都是弱引用,随时会被垃圾回收机制回收,如果被回收,其实例中的键值对也会随着消失。

ECMAScript6之Set结构和Map结构的更多相关文章

  1. js-ES6学习笔记-Set结构和Map结构

    http://www.cnblogs.com/lonhon/ 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set ...

  2. ES6 Set结构和Map结构(上)

    Set ES6提供了新的数据结构--Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身也是一个构造函数,用来生成Set数据结构 var s = new Set(); [2,3,5 ...

  3. ES6笔记(6)-- Set、Map结构和Iterator迭代器

    系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...

  4. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

  5. hive笔记:复杂数据类型-map结构

    map 结构 1. 语法:map(k1,v1,k2,v2,…)   操作类型:map ,map类型的数据可以通过'列名['key']的方式访问 案例: select deductions['Feder ...

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

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

  7. [Go语言]从Docker源码学习Go——if语句和map结构

    if语句 继续看docker.go文件的main函数 if reexec.Init() { return } go语言的if不需要像其它语言那样必须加括号,而且,可以在判断以前,增加赋值语句 语法 I ...

  8. seam remote 返回的map结构

    map结构的数据,js接收到的结构是elements下面的一个 [ {key:***,value:***}, {key:***,value:***} ] 这样子的集合,需要经过下面代码的转换才能重新变 ...

  9. set和map结构,class类

    1.set数据结构和map数据结构: (1)set: 数据结构set(集合,无序且值不能重复的数据集合,特点是key值和value值相同,没有重复的value //1 创建set ,,]) conso ...

随机推荐

  1. 史上最全的Matlab资源电子书教程和视频下载合集【超级推荐】

    收藏吧,网上搜集的,费了老大劲了,推荐给有需要的人,^_^.   MATLAB课件2007北京交通大学.zip 4.87 MB   A Guide to MATLAB for Beginners an ...

  2. HBase Maven 工程模块梳理

    HBase Maven 工程各个 Model 功能说明: github 地址:git://git.apache.org/hbase.git 版本:2.0.0-SNAPSHOT hbase-annota ...

  3. javascript设计模式系列

    javascript设计模式系列   创建型: 1.抽象工厂模式(Abstract Factory) 2.构建者模式(Builder) 3.工厂方法模式(Factory Method) 4.原型模式( ...

  4. iOS基础 - 类扩展

    一.类扩展(class extension,匿名分类) 1.格式 @interface 类名 () { // 成员变量... } // 方法声明... @end 2.作用 1> 写在.m文件中 ...

  5. baidu 200兆SVN代码服务器

    转 今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢!   开篇先给大家讲个我自己的故事,几个月前在网上接了个小软件开发的私活,平日上班时间也比较忙,就中午一会儿休息时间能抽出来倒腾着去做 ...

  6. tcp连接以及网络I/O的几个问题

    这段时间在做一些web方面开发的事情,用的Nginx+fast-cgi,计划深入看一下Nginx的内部实现和架构,以方便理解和调优.后面准备写一篇有关Nginx介绍和深度解析的文章,要深入理解web服 ...

  7. Scrum与高效能人士

    Scrum与高效能人士的执行4原则   分享了高效能人士的执行4原则,发现它和Scrum非常相近,可以形成互补. Scrum框架: 高效能人士的执行4原则框架: Scrum与4原则 Sprint Ba ...

  8. Linux网络编程(三)

    Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...

  9. 如何去除AJAX收到数据中包含的html页面数据

    问题: 如下代码所示,我用AJAX收到来自url: 'kzkj_check.jsp',返回的数据msg,总是包含页面的html数据,可是我只想要我返回的数据“false”, $.ajax({ url: ...

  10. IIS日志分析的作用

    站长都知道有ISS日志,可是有很少人去关注它,也许你觉得在一些站长工具里面我们就能找到我们想要的工具,哪你就错了,我们的网站被收入靠的是蜘蛛,想要真正了解蜘蛛,就一定要好好重视iss日志分析,为什么这 ...