1.Map 进行遍历,以下两个最高级。
for...of
let a = new Map();
a.set(0, '发');
a.set(1, '黄飞');
a.set(2, '黄鸿');
a.set(3, '飞鸿');
// 将会输出4个结果。
0 --------------- 发
1 --------------- 黄飞
2 --------------- 黄鸿
3 --------------- 飞鸿
for (let [key, value] of a) {
console.log(key, '---------------', value);
}
//keys()是对键名的遍历,values()是对键值的遍历
for (let key of a.keys()) {
console.log(key); // 获取键名
}
for (let value of a.values()) {
console.log(value); // 获取键值
}
forEach()
let a = new Map();
a.set(0, '发');
a.set(1, '黄飞');
a.set(2, '黄鸿');
a.set(3, '飞鸿');
// 将会输出4个结果。
0 --------------- 发
1 --------------- 黄飞
2 --------------- 黄鸿
3 --------------- 飞鸿
for (let [key, value] of a) {
console.log(key, '---------------', value);
}
//es5写法
a.forEach(function (value, key) {
console.log(value + "=" + key);//获取键值等于的键名
})
//es6写法
a.forEach((v, k) => {
console.log(v + "=" + k);//获取键值等于的键名
});
2.Map 对象的操作
// Map 与 Array的转换
// 1.数组转map对象
//首先创建一个二维数组,将创建好的二维数组放入map对象中,然后输出查看
let re = [
['naem', '发哈'],
['pwd', '123456'],
['age', 20]
]
let re1 = new Map(re);
console.log(re1);
// 2.map对象转数组
// 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
let re2 = Array.from(re1);
console.log(re2);
Map 的克隆
//首先创建一个map对象,用set往里添加键名和键值,
//然后在创建一个空的map对象,将创建好好的map对象放入新创建的空map对象中
//console输出在控制台查看
let a =new Map();
a.set(0,'wda');
a.set(1,'af');
let a1 = new Map(a);
console.log(a1);
//输出结果为{ 0 => 'wda', 1 => 'af' }
map 的合并
//创建两个map对象,
let b = new Map();
b.set(0, '打完');
b.set(1, '啊发');
let b1 = new Map()
b1.set(2, '安抚');
b1.set(3, '阿发');
//用 "剩余运算符 ..." 将两个对象放入数组中合并
//注:输入的键名相同,后面的会将前面的键值覆盖;
let b2 = new Map([...b, ...b1]);
console.log(b2);
//Map 的键值对个数可以从 size 属性获取
//获取合并后的map对象的个数
console.log(b2.size);
map中的查找 ,删除
// map中的has()方法 检测成员是否存在
let b = new Map();
b.set(0, '打完');
b.set(1, '啊发');
//查找有没有30这个成员存在
if (b.has(30)) {
console.log("有");
} else {
console.log("没有");
}
//结果没有
// map对象中的delete(key):删除指定成员 // map对象中的clear:删除所有成员
//创建两个map对象,
let b = new Map();
b.set(0, '打完');
b.set(1, '啊发');
//删除键名为1的
b.delete(1);
console.log(b); //{ 0 => '打完' }
//删除所有
b.clear();
console.log(b); //{}