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, &