ECMAScript6 Set和Map数据结构
来源:互联网 发布:淘宝微淘官网首页 编辑:程序博客网 时间:2024/06/05 14:24
1.Set ——(1)数组去重的另一种方法:Array.from(new Set(array)),
(2)Set可以很容易实现并集,交集和差集
Set方法能够去重
Set的操作方法有:add(),delete(),has(),clear()
Set转为数组:Array.from()。
Set的四个遍历方法:keys(),values(),entries(),forEach()
前两个用法相同,第三个方法返回的是键值对的遍历器,Set结构键名和键值是同一个值,forEach()方法参数依次为键值,键名,集合本身。
E.g: let set = new Set([‘red’,’green’,’blue’]);for(let iof set.values()) {console.log(i);}
//red,green,blue依次出现,可以省略values()方法,因为是默认方法
遍历的应用 扩展运算符(...)和Set结构相结合,数组去重 [...new Set(array)]
数组的map和filter也可用于Set,set = new Set([...set].map(x => x*2))
2.WeakSet——成员只能是对象,不能是其他类型的值;垃圾回收机制不考虑WeakSet中的对象,因此不可遍历,可防内存泄露。有add(),has(),delete()三个方法。
3.Map——键值对的数据结构 set(),get()方法;解决同名属性碰撞的问题
E.g: let map = new map(); map.set(1,’aaa’);map.get(1) //’aaa’
值得注意的是:只有对同一个对象的引用,Map结构才将其视为同一个键:
var map= new Map();
map.set(['a'], 555);
map.get(['a']) // undefined 表面上是针对同一个键,实际上内存地址不一样。
同理,同样的值的两个实例,在Map结构中被视为两个键。
var k1= ['a'];var k2= ['a'];
new Map().set(k1, 111).set(k2, 222);
map.get(k1) // 111 map.get(k2) // 222
Map结构的操作方法:size属性,set(key,value)(因为是返回Map本身,所以可以采用链式方法),get(key),has(),delete(),clear().
Map结构的遍历方法:keys(),values(),entries()默认遍历接口,forEach()
Map结构转为数组结构,扩展运算符[...map]/[...map.entries],可结合数组的map方法和filter方法实现遍历和过滤。
Map与其他数据之间的转换:
Map => 数组: [...map]
数组 => Map:new Map(array)
Map => 对象 前提:Map的键都是字符串
对象 => Map
Map => Json JSON.stringify(),Map键名都是字符串,转为对象Json;Map键名有非字符串转为数组Json
Json => Map JSON.parse(),正常情况下,所有键名都是字符串,有一种特殊情况,整个Json是一个数组,每个数组的成员本身又是一个有两个成员的数组
4.WeakMap 只接受对象作为键名,null除外,键名指向的对象不计入垃圾回收机制,可防内存泄露。只有四个方法:get(),set(),has(),delete().另一个用处是部署私有属性。
- ECMAScript6 Set和Map数据结构
- ECMAScript6笔记:Set和Map数据结构
- ECMAScript6标准Set和Map的使用
- ECMAscript6快速入门-set和map
- Set和Map数据结构
- Set和Map数据结构
- Set和Map数据结构
- [数据结构]Map和Set
- Set和Map数据结构
- Set和Map数据结构
- Set和Map数据结构
- Set和Map数据结构
- ECMAScript6(11):Set 与 Map
- es6 set和map数据结构
- ECMAScript6简介和学习笔记(三)symbol proxy reflect set map
- ECMAscript6 set
- 自学-ES6篇-Set和Map数据结构
- ECMAScript 6之Set和Map数据结构
- NYOJ:试 制 品
- iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation
- Android 日期时间选择器
- 线程和进程
- 第2周项目1-C/C++语言中函数参数传递的三种方式
- ECMAScript6 Set和Map数据结构
- Sql servel 事物回滚一(XACT_ABORT 事物回滚)
- 微信支付集成第一次调用支付界面成功,以后调不起来支付界面返回-1,等微信支付问题。
- SSL单向/双向认证过程
- Makefile学习笔记系列2:一个简单的Makefile(增加子目录结构)
- Sql server事物回滚二(根据条件判断)
- 正则应用法则
- poj 1273 Drainage Ditches 网络流最大流入门 ford-fulkerson
- webscoket rfc6455 中文版链接