ES6中的Map
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ES6中的Map,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3119字,纯文字阅读大概需要5分钟。
内容图文

今天小编和大家一起探讨一下引用类型中的map,在其中会有一些map与数组联合应用,还有和map类似的weakmap类型的说明,这篇文章同时也增加了一些操作数组的办法和实际应用。大家也可以关注我的微信公众号,蜗牛全栈。
一、map的声明
let s = new Set([1,2,3]) console.log(s) // Set(3){1,2,3}
// map中的数据不会出现重复的情况,如果重复,会将重复的元素去掉。可以应用这一特性,对数组进行去重等处理 let s = new Set([1,2,3,1]) console.log(s) // Set(3){1,2,3}
二、向map中添加元素:使用add方法
let s = new Set([1,2,3]) s.add("school") console.log(s) // Set(4){1,2,3,"school"}
// 可以通过链式添加,将元素添加到map中 let s = new Set([1,2,3]) s.add("school").add("bus") console.log(s) // Set(5){1,2,3,"school","bus"}
三、删除map中的元素:使用delete方法
let s = new Set([1,2,3]) s.delete(2) console.log(s) // Set(2){1,3}
四、清空map内的全部元素:调用clear方法
let s = new Set([1,2,3]) s.clear() console.log(s) // Set(0){}
五、判断map中是否含有某个元素:调用has方法
let s = new Set([1,2,3]) console.log(s.has(2)) // true
六、获取map中元素个数:调用size
let s = new Set([1,2,3]) console.log(s.size) // 3
七、map的遍历
let s = new Set([1,2,3]) s.forEach(item => console.log(item)) // 1 2 3for(let item of s){ console.log(item) // 1 2 3} for(let item of s.keys()){ console.log(item) // 1 2 3} for(let item of s.values()){ console.log(item) // 1 2 3} // 对于map,key和value是一样的for(let item of s.entries()){ console.log(item) // [1,1] [2,2] [3,3] }
八、实际应用
1、数组去重
let arr = [1,2,3,3,3,2,1] let s = new Set(arr) console.log(s) // Set(3){1,2,3} console.log([...s]) // [1,2,3] console.log(Array.from(s)) // [1,2,3]
2、数组合并后去重
let arr1 = [1,2,3,4] let arr2 = [2,3,4,5,6] let s = new Set([...arr1,...arr2]) console.log(s) // Set(6){1,2,3,4,5,6} console.log([...s]) // [1,2,3,4,5,6] console.log(Array.from(s)) // [1,2,3,4,5,6]
3、求两个数组的交集
let arr1 = [1,2,3,4] let arr2 = [2,3,4,5,6] let s1 = new Set(arr1) let s2 = new Set(arr2) let result = new Set(arr1.filter((item) => s2.has(item))) console.log(result) // Set(3){2,3,4}
4、求两个数组差集
let arr1 = [1,2,3,4] let arr2 = [2,3,4,5,6] let s1 = new Set(arr1) let s2 = new Set(arr2) let s3 = new Set(arr1.filter((item) => !s2.has(item))) let s4 = new Set(arr2.filter((item) => !s1.has(item))) console.log(s3) // Map(1){1} console.log(s4) // Map(1){5,6} console.log([...s3,...s4]) // [1,5,6]
九、WeakMap:里面只能存放Object,不能存放其他数据类型
let ws = new WeakSet() // ws.add(1) // 报错:因为1不是Object类型,不能添加到WeakMap中ws.add({ name:"lilei" }) ws.add({ age:12 }) console.log(ws) // WeakSet{{...},{...}}
1、删除对象
let ws = new WeakSet() // ws.add(1) // 报错:Invalid value used in weak setws.add({ name:"lilei" }) ws.add({ age:12 }) ws.delete({ name:"lilei" }) console.log(ws) // WeakSet{{...},{...}} 删除之后没有生效,因为对象是引用数据类型,添加对象的地址和删除元素的地址不一致,导致不能删除
let ws = new WeakSet() const obj1 = {name:"lilei"} const obj2 = {age:12} ws.add(obj1) ws.add(obj2) console.log(ws) // WeakSet{{...},{...}} ws.delete(obj1) console.log(ws) // WeakSet{{...}} // 已经删除了{name:"lilei"}内容,主要就是因为对象属于引用类型,直接在delete写对象与前一个对象在堆内存中指向的不是同一个地址 console.log(ws.has(obj2)) // true 判断内部是否含有obj2对象,与map相同,使用has函数
2、循环遍历:js中不能对WeakMap类型数据进行循环遍历,这个与垃圾回收(GC)有关,具体机制小编还不是很清楚,在今后的文章中会补上这一课。
let ws = new WeakSet() const obj1 = {name:"lilei"} const obj2 = {age:12} ws.add(obj1) ws.add(obj2) ws.forEach(item => console.log(item)) // 报错:ws.forEach is not a function
原文:https://www.cnblogs.com/feiying3995/p/14908599.html
内容总结
以上是互联网集市为您收集整理的ES6中的Map全部内容,希望文章能够帮你解决ES6中的Map所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。