es6 Map数据结构 学习笔记

10 篇文章 1 订阅
6 篇文章 0 订阅

含义和基本用法

Map结构类似于对象,也是键值对的集合,但是键的访问不仅限于字符串,各种类型的值(包括对象)都可以当作键。

Map函数是Map数据结构的构造函数,可以通过new方法创建map数据结构

Map函数可以接受一个数组(任何具有Iterator接口的数据都可以)作为参数,数组的成员是一个个表示键值对的数组

//情景1:参数为空
let map1=new Map() // map {}
//情景2:参数为数组
let map2=new map([['num1',1],['num2',2]]) //map2 {'num1'=>1,'num2'=>2}
//情景3:参数为Set数据结构
let set1=new Set(['name',1]);
let map3=new Map([set1]) //map3 {'name'=>1}

let set2=new Set([['name',2]]);
let map4=new Map(set2); //map4 {'name'=>2}

 

实例属性和操作方法

1、size属性 :返回map结构的成员总数

let map=new Map([['name1',1],['name2',2]]);
map.size //2

2、set(key,value):  设置键名key对应的键值为value,然后返回整个Map结构,可以采用链式写法

     如果对同一个键重复赋值,后面的值会覆盖前面的值

let map1=new Map();
map1.set('name1',1).set('name2',2) //map {'name1'=>1,'name2'=>2}l;

let map2=new Map();
map2.set('name',1).set('name',2) //map {'name'=>2}

3、get(key) :读取键名key对应的键值,找不到返回undefined\

let arr=[]
let map=new Map([[arr,1]])
map.get(arr) //1
map.get([]) //undefined

4、has(key):返回一个布尔值,表示某个键是否在当前 Map 对象之中

let arr=[]
let map=new Map([[arr,1]])
map.has(arr) //true
map.has([]) //false

5、delete(key):删除某个键,返回true。如果删除失败,返回false

let arr=[]
let map=new Map([[arr,1]])
map.delete(arr) //true
map.delete([]) //false

6、clear():清除所有成员,没有返回值。

7、keys():返回键名的遍历器。

8、values():返回键值的遍历器。

9、entries():返回所有成员的遍历器

10、forEach():遍历 Map 的所有成员。

注意:Map 的遍历顺序就是插入顺序

let map=map.set('a',1).set('b',2)
map.keys() // MapIterator {"a", "b"}
map.values() // MapIterator {1, 2}
map.entries() // MapIterator {"a" => 1, "b" => 2}

 Map与其他数据的转换

1、Map转数组

拓展运算符、Array.of()、Array.from()

let map=new Map([[true,1],[[],2],[123]]); 
//map Map(3) {true => 1, Array(0) => 2, 123 => undefined}

// ... 扩展运算符
let arr1=[...map] 
//arr1=[[true,1],[[],2],[123,undefined]]

//Array.of与...拓展运算符结合使用
let arr2=Array.of(...map)

//Array.from()
let arr3=Array.from(map)

2、数组转Map

let map=new Map([[true,1],[[],1]])

let arr1=['foo',1]
let arr2=[true,2]
let map2=new Map().set(...arr1).set(...arr2)

3、Map转对象

let map=new Map().set('name','lilei').set('age',13);
let obj= Object.create(null) 
for(let [key,value] of map){
    obj[key]=value
}

4,、对象转Map

let obj={name:'lilei'.age:13};
let map=new Map()
for(let (key,value) of obj){
    map.set(key,value)
}

5、Map转json

情形1:Map 的键名都是字符串,先转对象,再转json

情形2:Map 的键名有非字符串,这时可以选择转为数组 json。

let map=new Map([[true,1]])
let json=JSON.stringify([...map])

6、json转Map

JSON 转为 Map,正常情况下,所有键名都是字符串。

可以使用JSON.parse方法转为正常的对象或者数组,然后转为Map

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值