想品客老师的第五天:Map与WeakMap类型

Map 对象保存键值对,并且能够记住键的原始插入顺序。

任何值(对象或者原始值)都可以作为键或值。

原始值:string、number、bigint、boolean、symbol、undefined、null

map的创建

如何创建:

new一个map并且通过map.set() 方法添加或更新键值对

  let map = new Map()
        map.set('name', '我是个字符串')
        map.set(function () { }, '我是个函数')
        map.set({},'我是个对象')
        console.log(map);

可以看见什么类型的东西都能往里存

其他类型做得到吗:

也可以在new的时候往里面添加内容

 let map = new Map([['我是个', '数组'], ['我是键', '我是值']])
        console.log(map)

之前学的string等类型可以进行链式操作

链式操作:是一种编程风格,允许在单个语句中连续调用多个方法,每个方法的返回值通常是对象本身或另一个对象,从而可以继续调用其他方法。这种风格使代码更简洁、易读。

简单来说就是写成一长串

在string里可以这么写:

let str = "abc"
console.log(str.toLowerCase().substr(1, 1))//b

map也可以:

let map = new Map([['我是个', '数组'], ['我是键', '我是值']])
        map.set('名字','荷叶饭').set('hello','world')
        console.log(map)

map的增删改查

使用get方法获取值

 let obj = {
            name: '荷叶饭'
        }
        let map = new Map()
        map.set(obj, '我是个对象')
        console.log(map.get(obj))//我是个对象

这么写可以访问到,而这样就不可以了:

  let obj = {
            name: '荷叶饭'
        }
        let map = new Map()
        map.set(obj, '我是个对象')
        console.log(map.get({
            name: '荷叶饭'
        }))//undefined

有人就要问了:筑波筑波,obj={name: '荷叶饭' },为什么把obj换成{name: '荷叶饭' }就不行了

孩子因为这是引用类型,这两个是两个不同的对象,引用不同,所以不相等,所以undefined

删除也用delete(),返回值也是bool:

 let obj = {
            name: '荷叶饭'
        }
        let map = new Map()
        map.set(obj, &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值