Map和WeakMap

一、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是弱类型,弱类型的好处是变量会被垃圾机制自动回收,不占用内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值