es6 新增的两种数据结构 Set Map
es6中,新增了两种数据结构,或者说是两个集合类,Set和Map
最简单的理解就是,跟Java中的Set和Map是一样的??
Set
Set中存储的值不能重复,也就是说,可以自动的实现去重的功能。
实例化
// Set(2) {1, 2}
//方法一
const s=new Set();
s.add(1).add(2).add(1).add(2) // 支持链式调用
//方法二
const s1=new Set([1,2,1,2])
类型转换
Array转Set,参照上述方法二
const s1=new Set([1,2,1,2])
Set转Array
//返回 [1,2]
//方法一
Array.from(s)
//方法二
[...s]
简单去重
let arr=[1,2,3,2,1];
arr=[...new Set(arr)];
Map
Map乍一看跟对象很像,但是Map跟对象还是有一些区别的
- Map实现了迭代方法,而对象的属性不可以直接迭代
- Map的键可以是任何对象,而对象的键只能是字符串
实例化
//实例化Map类
const map=new Map()
map.set('name','binx').set('age',18).set({a:1},'value')
//通过二维数组实例化
new Map([['name','binx'],['age',18]])
类型转换
Map转Object
let map=new Map([['name','binx'],['age',18]])
let o={};
//循环遍历赋值
for(let [k,v] of map){
o[k]=v;
}
Object转Map
let o={name:'binx',age:18}
// Object.entries 方法可以返回对象的键值对二维数组
let map=new Map(Object.entries(o))
const o={name:'binx',age:18}
const map=new Map();
//循环遍历填充Map
for(let k in o){
map.set(k,o[k]);
}