干货-es6第二版set,map复习笔记

本系列复习笔记:
干货-es6第二版“类型”复习笔记(持续更新…)
干货-es6语法风格复习笔记

继续介绍 Set 和 Map
其实这两种新型的数据结构也有很多的相似性,
可以参照第一篇学习类型的方式来学习。

map和set知识结构

比如两种数据结构都有
1.遍历的操作
2.其实例属性和方法也有类似
3.都可以与其他类型数据进行转换
4.都有weak-弱引用的使用方式

并且他们的区别在于:

Map是键值对的集合,是不是很像对象?区别于对象,Map中“键”的范围可以使用各种类型的值。
所以应用更为广泛,可以操作更多类型的键值对。

Set更像数组类型,但是区别在于,Set中没有重复的元素。
所以在应用中,我们可以尝尝可以使用数组转Set再转回数组的方式,进行去重操作。
一行代码去重:

[...new Set([1,2,3,1,])]  // [1,2,3]

与es5的各种去重方式比较,这个方法简便很多


接下来,我们再讨论一下数据类型转换的问题。

与数组的转化:(使用…扩展运算)

//转化为数组
const myMap = new Map()
.set(true, 7)
.set({foo:3}, ['abc']);
[...myMap]

//[[true,7],[{foo:3},['abc']]
//数组转为Map
new Map([
[true,7],
[{foo:3},['abc']]
])

与对象的转化:

//转化为对象(前提是Map键值都是字符串)
let obj = Object.create(null);
for (let [k,v] of strMap) {
obj[k] = v;
}
//对象转为Map
let strMap = new Map();
for (let k in Object.keys(obj)) {
strMap.set(k, obj[k]);
}

与Json的转化:

//转化为Json,两种情况:
JSON.stringfy(map)//1.键名都是字符串:
JSON.string([...map])//2.键名都是非字符串:
//Json转为Map,两种情况

JSON.parse(j)//1.正常情况:后再用对象转Map的方法
new Map(JSON.parse(j))//2.特殊情况,Json都是数组 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值