ECMAScript 6 学习笔记----set和map数据结构
2016-10-10 09:52
309 查看
1.Set
ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
Set实例的属性和方法
Set结构的实例有以下属性。
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。
Set结构的实例有四个遍历方法,可以用于遍历成员。
需要特别指出的是,
2.WeakSet
WeakSet结构与Set类似,也是不重复的值的集合。但是,它与Set有两个区别。
首先,WeakSet的成员只能是对象,而不能是其他类型的值。
其次,WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用
3.map
JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应
Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题。
map实例的属性和方法
(1)size属性
(2)set(key,
value)
(3)get(key)
(4)has(key)
(5)delete(key)
(6)clear()
遍历方法
Map原生提供三个遍历器生成函数和一个遍历方法。
需要特别注意的是,Map的遍历顺序就是插入顺序。
map可以与其他数据结构相互转换
(1)Map与数组转换
(2)Map与对象转换,如果所有Map的键都是字符串,它可以转为对象
(3)Map与JSON互转。
4.WeakMap
学习文档:ECMAScript 入门----阮一峰
ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
var s = new Set(); [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4
Set实例的属性和方法
Set结构的实例有以下属性。
Set.prototype.constructor:构造函数,默认就是
Set函数。
Set.prototype.size:返回
Set实例的成员总数。
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。
add(value):添加某个值,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为
Set的成员。
clear():清除所有成员,没有返回值。
Set结构的实例有四个遍历方法,可以用于遍历成员。
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
需要特别指出的是,
Set的遍历顺序就是插入顺序。
2.WeakSet
WeakSet结构与Set类似,也是不重复的值的集合。但是,它与Set有两个区别。
首先,WeakSet的成员只能是对象,而不能是其他类型的值。
其次,WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用
3.map
JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应
Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题。
var map = new Map(); var k1 = ['a']; var k2 = ['a']; map .set(k1, 111) .set(k2, 222); map.get(k1) // 111 map.get(k2) // 222
map实例的属性和方法
(1)size属性
(2)set(key,
value)
(3)get(key)
(4)has(key)
(5)delete(key)
(6)clear()
遍历方法
Map原生提供三个遍历器生成函数和一个遍历方法。
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历Map的所有成员。
需要特别注意的是,Map的遍历顺序就是插入顺序。
map可以与其他数据结构相互转换
(1)Map与数组转换
(2)Map与对象转换,如果所有Map的键都是字符串,它可以转为对象
(3)Map与JSON互转。
4.WeakMap
WeakMap结构与
Map结构基本类似,唯一的区别是它只接受对象作为键名(
null除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制。
学习文档:ECMAScript 入门----阮一峰
相关文章推荐
- ECMAScript 6 学习系列课程 (ES6 Set和Map数据结构)
- java学习个人笔记---容器之Map与Set关系
- 20,21,22-Hibernate容器映射技术(Set、List、Map) -mldn学习笔记 -hxzon
- Collection、List、Set、Map、Queue关系图学习笔记2
- 【JavaScript学习笔记】7:函数提升,变量提升,异常抛掷和捕获,ES6的Map和Set
- HTML5学习笔记(十二):JavaScript新增Map和Set
- ECMAScript 6 入门笔记(七)Symbol,set和map
- ECMAScript6简介和学习笔记(三)symbol proxy reflect set map
- 学习笔记:ES6之Set-map
- Java学习笔记(2)----散列集/线性表/队列/集合/图(Set,List,Queue,Collection,Map)
- es6学习笔记8--Map数据结构
- 【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
- Scala学习笔记26【Set、Map、TreeSet、TreeMap实战】
- Spring学习笔记 关于Bean属性的初始化 - 使用inner bean以及List, Map与Set的初始化
- C++ STL关联容器 set和map学习笔记
- Java SE学习笔记:MAP与SET(集合与映射)
- JavaSE学习实战完全笔记--集合的实现细节--Set和Map
- 【学习笔记】Bit-map数据结构
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- C++ Primer 学习笔记:关联容器入门 set && map