ECMAScript6之Set结构和Map结构
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结构的更多相关文章
- js-ES6学习笔记-Set结构和Map结构
http://www.cnblogs.com/lonhon/ 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set ...
- ES6 Set结构和Map结构(上)
Set ES6提供了新的数据结构--Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身也是一个构造函数,用来生成Set数据结构 var s = new Set(); [2,3,5 ...
- ES6笔记(6)-- Set、Map结构和Iterator迭代器
系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- hive笔记:复杂数据类型-map结构
map 结构 1. 语法:map(k1,v1,k2,v2,…) 操作类型:map ,map类型的数据可以通过'列名['key']的方式访问 案例: select deductions['Feder ...
- ES6学习:Map结构的目的和基本用法
Map结构的目的和基本用法 JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键.这给它的使用带来了很大的限制. 1 2 3 4 5 6 7 8 ...
- [Go语言]从Docker源码学习Go——if语句和map结构
if语句 继续看docker.go文件的main函数 if reexec.Init() { return } go语言的if不需要像其它语言那样必须加括号,而且,可以在判断以前,增加赋值语句 语法 I ...
- seam remote 返回的map结构
map结构的数据,js接收到的结构是elements下面的一个 [ {key:***,value:***}, {key:***,value:***} ] 这样子的集合,需要经过下面代码的转换才能重新变 ...
- set和map结构,class类
1.set数据结构和map数据结构: (1)set: 数据结构set(集合,无序且值不能重复的数据集合,特点是key值和value值相同,没有重复的value //1 创建set ,,]) conso ...
随机推荐
- 使用 ArcGIS Online和APP进行监控操作和数据采集
主要介绍的App是Operations Dashboard for ArcGIS 和 Collector for ArcGIS,它们 提高了组织内日常操作的效率.精度和响应速度. 已经购买了 ArcG ...
- Idea构建Maven项目教程
Idea构建Maven项目,以及其中遇到的坑,及解决方案 步骤一:配置Idea的maven插件 步骤二:创建maven项目 file-->new-->project 下一步,设置group ...
- MVC应用程序实现文件库(FlexPaper)
MVC应用程序实现文件库(FlexPaper) 很久之前Insus.NET在实现了<FlexPaper实现文档在线浏览>http://www.cnblogs.com/insus/archi ...
- 大数据和Hadoop生态圈
大数据和Hadoop生态圈 一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop ...
- HttpClient的使用-爬虫学习1
HttpClient的使用-爬虫学习(一) Apache真是伟大,为我们提供了HttpClient.jar,这个HttpClient是客户端的http通信实现库,这个类库的作用是接受和发送http报文 ...
- 【转】在iOS开发中使用FMDB
本文转载自:唐巧的博客 在iOS开发中使用FMDB APR 22ND, 2012 前言 SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iO ...
- IT团队管理
如果在IT项目实施中选出最难解决的几个问题,那么管理问题一定名列前茅.在管理问题中,团队管理又是其中的难点.一个项目管理的 好坏,很大程度就体现在团队的建设和管理上.团队管理涉及到管理学.心理学和哲学 ...
- eclipse plugin 导出插件包
当我们的插件在完成一个阶段性开发的时候,我们要发布一个1.0的版本.这个时候会碰到一个问题.如何把我们的插件打成包?有多种途径,下面具体讨论一下. 首先从插件完成到被他人(或者我们自己)使用有两个步骤 ...
- 淘宝ued - 前端智勇大闯关(第三季)答案(更新)
淘宝ued - 前端智勇大闯关(第三季)答案(更新) 下午在微博上看到了淘宝智勇大闯关第三季的信息,感觉挺有意思的,于是就尝试做了下.附上题目地址: http://ued.campus.alibaba ...
- MFC中菜单变灰的问题
MFC中菜单变灰 方法1:有UpdateCmdUI句柄时 定义一个BOOL变量m_b来标志菜单项是否有效, 该菜单项响应UPDATE_COMMAND_UI消息,在消息处理函数中pCmdUI->E ...