JavaScript的默认对象表示方式{}
可以视为其他语言中的Map
或Dictionary
的数据结构,即一组键值对。
但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。
为了解决这个问题,最新的ES6规范引入了新的数据类型Map
初始化Map
需要一个二维数组,或者直接初始化一个空Map
var map = new Map([['tom',18],['lucy',22],['lily',17]])
var map = new Map([['tom',18],['lucy',22],['lily',17]])
//获取map的长度
map.size
//设置一个key-value,如果已经存在会覆盖value
map.set('james',25)
//判断是否存在一个key
map.has('lucy')
//根据key获取value
map.get('lucy')
//根据key删除
map.delete('tom')
//清空map
map.clear()
Set
和Map
类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set
中,没有重复的key。
要创建一个Set
,需要提供一个Array
作为输入,或者直接创建一个空Set
var set = new Set(['lucy','tom','james'])
var set = new Set(['lucy','tom','james'])
//获取set的长度
set.size
//添加一个元素
set.add('lily')
//删除一个元素
set.delete('tom')
//清空
set.clear()
//判断是否存在元素
set.has('james')
遍历Array
可以采用下标循环,遍历Map
和Set
就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable
类型,Array
、Map
和Set
都属于iterable
类型。
具有iterable
类型的集合可以通过新的for ... of
循环来遍历,for ... of
循环是ES6引入的新的语法
var set = new Set(['lucy','tom','james'])
for(name of set){
console.log(name)
}