一、Map
1、基本使用
let typeMap = new Map();
typeMap.set( 'a',100 ).set("b",200)
console.log(typeMap)
Map有key,并且可以单独设置key,Set 的key和value是相同,上面代码中的第一个参数a是定义对象的key,第二个参数100是定义对象value
Map方法初始化赋值可以连续打点(类似于jquery的方法)
Map的初始化赋值可以是数组不可以是对象
let typeMap = new Map([
["name","張三"],
["age","15隨"],
["sex","女"]
]);
console.log(typeMap)
2、Map的key可以是任意类型
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
typeMap.set(obj,888)
console.log(typeMap)
对同一个键多次赋值,后面的值将覆盖前面的值
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
typeMap.set(obj,888)
typeMap.set(obj,999)
console.log(typeMap)
3、Map的方法和属性
3.1、size
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
let arr =[1,2,3,5,6]
typeMap.set(obj,'obj').set(arr,'arr').set('a',666)
console.log(typeMap)
console.log(typeMap.size)
3.2、 set()
内部一共有两个参数,第一个参数表示设置对象的key,第二个参数表示设置对象的value
3.3、get()
内部的参数表示要获取的对象的key
console.log(typeMap.get(obj))
console.log(typeMap.get('a'))
3.4、delete()
参数是要删除对应的key
typeMap.delete(obj)
typeMap.delete('a')
console.log(typeMap)
3.5、has()
has表示内部是否有对应的对象,返回布尔值
console.log(typeMap.has(arr))
console.log(typeMap.has('b'))
3.6、clear()
typeMap.clear()
console.log(typeMap)
4、Map的循环方法
循环方法和set是一样的,都支持for..of,forEach,entries
4.1、for...of
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
let arr =[1,2,3,5,6]
typeMap.set(obj,'obj').set(arr,'arr').set('a',666);
for(let item of typeMap){
console.log(item)
}
遍历 keys()
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
let arr =[1,2,3,5,6]
typeMap.set(obj,'obj').set(arr,'arr').set('a',666);
for(let item of typeMap.keys()){
console.log(item)
}
遍历 values()
let typeMap = new Map()
let obj = {
"a":100,
"b":150
}
let arr =[1,2,3,5,6]
typeMap.set(obj,'obj').set(arr,'arr').set('a',666);
for(let item of typeMap.values()){
console.log(item)
}
二、WeakMap
WeakMap结构与Map结构基本类似,唯一的区别是它只接受对象作为键名(null除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制
let typeWeakMap = new WeakMap()
let obj = {}
typeWeakMap.set(obj,"111")
console.log(typeWeakMap)
WeakMap和WeakSet一样,可用的方法只有get()、set()、has()、delete()
WeakMap和WeakSet的作用是类似的,我们的实际工作中,不会用来进行引用的产出(用来做计算或者遍历等等),主要的作用是辅助Map和Set的,因为Map和Set是强类型,而WeakMap和WeakSet是弱类型,弱类型的好处是变量会被垃圾机制自动回收,不占用内存