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

参考文献:
https://es6.ruanyifeng.com/?s...


_小乌龟
1 声望0 粉丝

引用和评论

0 条评论