当前位置:网站首页>es6新增数据类型--->Symbol、Map、Set
es6新增数据类型--->Symbol、Map、Set
2022-07-28 05:19:00 【哈哈ha~】
(一)Symbol--基本数据类型
- 概念:是一个内置全局函数,可以生成独一无二的数据,解决同名冲突问题
- 示例:
var re1=Symbol("hello")
var re2=Symbol("hello")
console.log(re1) //Symbol(hello)
console.log(re2) //Symbol(hello)
console.log(re1==re2) //false 虽然长得一样 但是是不同的数据(二)Map--引用数据类型
- Map对象保存键值对 key可以是任意值
Map的创建:
var m1=new Map() //创建没有语法糖Map的存取:
m1.set("age",21)
console.log(m1.get("age")) //用什么key存 就用它取- 存数据
var m2=new Map([["age",21],["name","hahah"]])
m2.set("life",1)
m2.set("age",21)
console.log(m2) //0: {"age" => 21} 1: {"name" => "ljx"} 2: {"life" => 1}
console.log(m2.size) //3
m2.delete(20)
var re9=m2.delete("age") //删除key 存在就返回true 不存在就返回false
var re8=m2.delete("age")
console.log(m2,re9,re8) //Map(2) {'name' => 'ljx', 'life' => 1} true false
m2.clear() //清除
console.log(m2) //Map(0) {size: 0}- 取数据
var m1=new Map([["age",21],["name","hahah"],[["key"],3]]) //初始化
console.log(m1)
var re1=m1.get("age")
var re2=m1.get("name")
var re3=m1.get(["key"]) //undefined 不是同一个数组=>引用
console.log(re1,re2,re3)
/*取re3:
var a=["key"]
var m1=new Map([["age",21],["name","ljx"],[a,3]])
var re3=m1.get(a)
console.log(re3)
*/注:引用数据作为map的key值时 取值必须是同一个引用 必须把引用数据用一个变量保存
Map的遍历:
遍历 forEach取Map数据
var m1=new Map()
m1.set(20,21)
m1.set("hello",2022)
m1.set(null,22)
m1.forEach(function(el){
console.log(el) //打印 21 2022 22
})Map对象的操作:
- 数组转Map
var arr=[[10,20],[30,40],["hello",2022]]
var m1=new Map(arr)
console.log(m1)- Map转数组
var arr=[[10,20],[30,40],["hello",2022]]
var m1=new Map(arr)
var arr2=Array.from(m1)
console.log(arr2)(三)Set--引用数据类型
- Set:集合 存储任何类型的唯一值 无序不重复 无论是原始值还是对象引用
var arr=[20,20]
var s1=new Set() //初始化
//var s2=new Set(arr) 可以直接放数组 遍历元素并去重添加到集合s2中
//var arr2=Array.from(s1) //取出数据容器(集合)中所以数据添加到数组arr2中
s1.add(90)
s1.add(100)
s1.add(90)
console.log(s1)
console.log(s1.size,666666)
s1.forEach(function(el){
console.log(el)
})- 并集 ... 代表取出元素
var s1=new Set([10,20,30,40])
s1.forEach(function(el){
console.log(el)
})
var s2=new Set([100,200,300,40])
var s3=new Set([...s1,...s2]) //... 代表取出元素
console.log(s3) //只有7个 去重40- 数组去重 数组转集合
var arr=[10,20,30,10]
var s1=new Set(arr)
var arr2=Array.from(s1)
console.log(arr2)- 去重2
var obj={age:20,age:300} //{age:300} 覆盖
obj[arr[3]]=100
var arr2=Object.keys(obj);- 交集
var a=new Set([1,2,3])
var b=new Set([3,4,5])
var arr=[...a]
var arr2=[...b]
var arr3=arr.filter(function(el){
// if(el在arr2中也有){
// return true
// }
return arr2.has(el)
})
var insersect=new Set([...a].filter(x=>b.has(x))) //{3}- 差集
var a=new Set([1,2,3])
var b=new Set([3,4,5])
var arr=[...a]
var arr2=[...b]
var arr3=arr.filter(function(el){
// if(el在arr2中也有){
// return true
// }
return !arr2.has(el)
})(四)数组--Map--Set的转换
- 数组转map:必须是二维数组
var arr=[[1,"hello"],[2,"h5"],[3,{name:"haha"}]]
var m1=new Map(arr)- map转数组: Array.from()静态方法
var arr2=Array.from(m1)
console.log(arr,m1,arr2,arr==arr2,arr[2][1]==arr2[2][1])- 数组转集合
var arr=[100,200,100,{age:20},{age:20}]
var s1=new Set(arr)
console.log(s1,s1.size)- 集合转数组
var arr2=Array.from(s1)
console.log(arr,s1,arr2,arr[4]==arr2[3])- 多个数组转集合和map:...
var arr1=[10,20]
var arr2=[100,20]
var arr3=[200,{name:"karen"}]
var s1=new Set([...arr1,...arr2,arr3])
var m1=new Map([arr1,arr2,arr3])
var m2=new Map(m1)
console.log(m1,m2,m1==m2,m1.get(200)==m2.get(200))
边栏推荐
- The Monte Carlo method solves the PI and draws points with turtle, and completes the progress bar problem
- Review of Metallurgical Physical Chemistry - gas liquid phase reaction kinetics
- openjudge:病人排队
- C语言通讯录系统
- Delete specific elements in order table OJ
- Advanced multithreading: Lock strategy
- 图片根据屏幕自适应
- [singleton mode] thread safety of lazy mode
- 博学谷学习记录】超强总结,用心分享 | 常用api
- List < long >, list < integer > convert each other
猜你喜欢

How Visio can quickly generate the same pattern and image matrix

顺序表的增删查改

Custom JSON return data

冶金物理化学复习 ---- 气固反应动力学

冶金物理化学复习 --- 冶金反应动力学基础与多相反应动力学特征

Operation and use of collection framework

冶金物理化学复习 --- 化学反应动力学基础

论文写作用词

Advanced multi threading: the underlying principle of synchronized, the process of lock optimization and lock upgrade

Idea configures the service (run dashboard) service, and multiple modules are started at the same time
随机推荐
顺序表的增删查改
[singleton mode] thread safety of lazy mode
openjudge:判断字符串是否为回文
NPM, YRAN, NPX的差异与关系
Openjudge: maximum span of string
Solve the problem that Oracle cannot use more than 1000 in statements
分支与循环语句
Learning of image enhancement evaluation index -- structural similarity SSIM
深度学习热力图可视化的方式
顺序表oj之删除特定的元素
标准C语言总结2
JVM notes 3: class loading and bytecode Technology
冶金物理化学复习 ---- 气固反应动力学
openjudge:找第一个只出现一次的字符
Openjudge: campus accommodation reservation system
图片根据屏幕自适应
Openjudge: find all substring positions
图像增强——MSRCR
shell运行原理
冶金物理化学复习 --- 液 - 液相反应动力学