Map和Set
2019-07-23 本文已影响0人
An的杂货铺
最新的ES6规范引入了新的数据类型Map和Set,需在支持es6的浏览器使用,Map是一组键值对的结构,具有极快的查找速度
Map 的声明方式
// 初始化Map需要一个二维数组,或者直接初始化一个空Map
var m = new Map();
var n = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
console.log(m);//{}
console.log(n);//{"Michael" => 95, "Bob" => 75, "Tracy" => 85}
Map的使用方法
var maps = new Map();
maps.set('lili','98');//添加新的key-value
console.log(map);// {"lili" => "98"}
var score = map.get('lili');//获取键值
console.log(score);//98
console.log(map.has('lili'));//true 查看是否含有某个键 返回布尔值
map.delete('lili');//删除某个键
console.log(map.get('lili'));//undefined
// 由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key
Set的声明方式
//要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set
var set = new Set();
var aset = ([1,2,3]);
console.log(set);//{}
console.log(aset);//[1,2,3]
重复元素在Set中自动被过滤:
var arrone = [1,3,3,5,6,'6'];
console.log(new Set(arrone));//[1,3,5,6,'6']
//根据Set的这个特性可以用来给数组去重
通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果
set.add(23);
set.add(32);
set.add(23);
console.log(set);//[23,32]
通过delete(key)方法可以删除元素
set.delete(32)
console.log(set);//[23]