在业务的开发中,对于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)
运行结果
set()既可以新建键值,也可以更新,如果该键名已有值就会更新值,否则新增该键并赋值。 同时返回的是当前Map对象,可采用链式写法
m.set(1, 'a').set(2, 'b').set(3, 'c')
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)
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)
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)
1.4 clear()
clear方法清除所有成员,没有返回值
m.set(1, 'a').set(2, 'b').set(3, 'c')
console.log(m)
m.clear()
console.log(m)
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);
});