new Map()的学习

155 阅读2分钟

在业务的开发中,对于new Map()的使用很少,让人渐渐淡忘了这个功能,今天在开发中看到有人使用该功能开发一个循环的form表单,感觉还挺特别,所以打算重新学习一下这块的功能。

所以什么是new Map呢?
Map类型是键值对的有序列表,而键和值都可以是任意类型

1、增删改查

1.1 set()
const m = new Map();
let fn = function(){}

m.set('edition', 6)        // 键是字符串
m.set(fn, 'standard')     // 键是函数
m.set(undefined, 'nah')    // 键是 undefined
console.log(m)

运行结果

image.png

set()既可以新建键值,也可以更新,如果该键名已有值就会更新值,否则新增该键并赋值。 同时返回的是当前Map对象,可采用链式写法

m.set(1, 'a').set(2, 'b').set(3, 'c')

image.png

1.2 get()

get方法读取key对应的键值,如果找不到key,返回undefined

m.set(1, 'a').set(2, 'b').set(3, 'c')
const a = m.get(1)
const d = m.get(4)
console.log(a, d)

image.png

1.3 has()

has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中

m.set(1, 'a').set(2, 'b').set(3, 'c')
const a = m.has(1)
const d = m.has(undefined)
console.log(a,d)

image.png

1.4 delete()

delete方法删除某个键,返回true。如果删除失败,返回false

m.set(1, 'a').set(2, 'b').set(3, 'c')
m.delete(1)
const d = m.has(1)
console.log(d)

image.png

1.4 clear()

clear方法清除所有成员,没有返回值

m.set(1, 'a').set(2, 'b').set(3, 'c')
console.log(m)
m.clear()
console.log(m)

image.png

2、遍历

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回所有成员的遍历器
  • forEach():遍历 Map 的所有成员
const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);

//keys()
for (let key of map.keys()) {
  console.log('map.keys()======',key); 
}

//values()
for (let value of map.values()) {
  console.log('map.values()======',value);  
}

// entries()
for (let item of map.entries()) {
  console.log('map.entries()item======',item[0], item[1]);
}

// 或者
for (let [key, value] of map.entries()) {
  console.log('map.entries()[key, value]======',key, value);
}


// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log('map()[key, value]======',key, value);
}


map.forEach(function(value, key, map) {
  console.log('map.forEach()======',key, value);  
});

image.png