Map
1、可使用任何类型作为键名
2、键名关联其地址
注!!!
例:
const map = new Map()
.set({x:1}, '1')
.set({x:1}, '2')
console.log(map.keys()) // { { x: 1 }, { x: 1 } }
// 第一个{x: 1} 与 第二个{x: 1} 属于两个不同的内存地址
/**---------------------------------------------*/
const maps = new Map()
.set({x:1}, '1')
console.log(maps.get({x:1})) // undefined
// 设置与打印时的{x: 1}属于两个不同的内存地址
/**---------------------------------------------*/
const mapss = new Map()
.set(1, '1')
.set(1, '2')
console.log(mapss.keys()) // { 1 }
console.log(mapss.keys()) // { [ 1, '2' ] }
// 非引用类型,其内存地址相同,同键名时,键值会被覆盖
Map键名
关于简单数据类型,只要两个值严格相等,Map 将其视为一个键;
例:
+0 与 -0 为同一个键
true 与 'true'为两个不同的键
undefined 与 null 为两个不同的键
注:NaN虽不严格相等于自身,但 Map 将其视为同一个键
const map = new Map()
map.set(+0, 0)
console.log(map.get(-0)) // 0
map.set(true, 'dui')
console.log(map.get('true')) // undefined
map.set(undefined, 'undefined')
map.set(null, 'null')
console.log(map.get(undefined)) // undefined
map.set(NaN, 'NaN')
console.log(map.get(NaN)) // NaN
创建Map内容的方式
/**----------------set单个创建-----------------------*/
const map = new Map()
map.set(key, value)
map.set(key, value)
/**-----------------链式创建--------------------------*/
const map = new Map()
.set(key, value)
.set(key, value)
/**-----------------数组式创建--------------------------*/
const map = new Map([[key, value], [key, value]])
// 备注:Map的赋值过程如下
// const arr = [[key, value], [key, value]]
// 将数组作为Map的入参,遍历设置
// arr.forEach(
// ([key, value]) => map.set(key, value)
// )
Map的属性、操作方法、遍历方法
/**------------------ 属性 ----------------------------*/
size // 返回Map的总成员数
/**------------------ 操作方法 -------------------------*/
set // set(key, value) 设置键名对应的键值 返回--整个Map结构
get // get(key) 获取对应键名对应的键值 返回--对应的键值或undefined
has // has(key) 判断Map内是否存在对应键 返回--布尔值
delete // delete(key) 删除Map内指定的键 返回--删除成功返回true,返回失败返回false
clear // clear() 清除Map的所有成员 返回--无返回值
/**------------------ 遍历方法 -------------------------*/
// const map = new Map()
// .set(0,'a')
// .set(1,'b')
// .set(2,'c')
keys // map.keys() ---- { 0, 1, 2 }
values // map.values() ---- { 'a', 'b', 'c' }
entries // map.values() ---- { [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] }
forEach
// map.forEach((value, key) => console.log([value, key]))
// [ 'a', 0 ]
// [ 'b', 1 ]
// [ 'c', 2 ]
for...of
// for (const [key, value] of map) { console.log(key, value) }
// 0 a
// 1 b
// 2 c
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。