Map对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
语法
key为String类型
let hm=new Map();
赋值set()
当有相同键时会进行覆盖
hm.set('st01','temo');
hm.set('st02','JS');
hm.set('st03','Java');
hm.set('st01','碰磕');//覆盖
取值get(键)
console.log("大小="+hm.size);//3
console.log(hm.get('st01'));//取值(碰磕)
for…of取值
利用数组解构
//for...of
for (const [key,val] of hm) { //[key,val]数组解构
console.log(key);//键
console.log(val);//值
}
for…each遍历
//for...each遍历
hm.forEach((val,key) => { //值,键
console.log("key="+key+",value="+val);
});
key为对象时
对象地址不同导致取不到
//key=对象
let hm2=new Map();
let js={};
let pk={name:'碰磕',age:18};
hm2.set(js,'这是个空值');
hm2.set(pk,'这是个pk对象');
console.log(hm2.get(js));
console.log(hm2.get({}));//地址不同,所以取不到
console.log(hm2.get(pk));
Map对象的操作
把map变成二维数组(Array.form())
let arr=Array.from(hm);
console.log(arr);
console.log(arr[0][1]);
合并map
利用…操作符展开合并
let a=new Map([['timi','提米'],['js','杰斯'],['pk','碰磕']]);
let b=new Map([['xm','小明'],['xh','小红']]);
let c=new Map([...a,...b]);//利用...操作符展开合并
console.log(c);
Set对象
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
语法
var s1=new Set();
赋值add()
s1.add("张三");
s1.add("李四");
s1.add("王五");
取值
for (const item of s1) {
console.log(item); // 取值
}
Set对象的操作
set与Array之间的转换
array转set
let arr=['a','b','c','a'];
let s2=new Set(arr);
console.log(s2);//a,b,c 去重复
set转array
//set转array
var arr1=[...s2];
console.log(arr1);//数组[a,b,c]
作用(去重、并集、交集、差集)
去重、并集表示唯一性
案例
//两个集合
let high=new Set(['张三','李四','王五','赵六']);
let mi=new Set(['碰磕','李四','赵六']);
//合并
let hb=new Set([...high,...mi]);
console.log(hb);
//交集
let jiao=new Set([...high].filter(x => mi.has(x)));
console.log(jiao);
//差集
let cha=new Set([...high].filter(x => !mi.has(x)));
console.log(cha);
Es6中Map和Set的练习应用完结~
欢迎评论,积极讨论。