欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-21 23:53:40
...

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

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

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

比如两种数据结构都有
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都是数组 
相关标签: es6 复习笔记

上一篇:

下一篇: