Set
1、类似于数组,键和值都是一样的
2、不允许有重复的元素出现
//1、 创建一个set集合
let set = new Set(["zhuangsan","lisi","wangwu"]);
console.log(set);
//2、一个属性 size
console.log(set.size);
//3、四个方法
//3.1 add
set.add("liudehua").add("xixi");//支持列式调用
//add返回一个对象
console.log(set);
//3.2删除
console.log(set.delete("xixi"));//返回一个布尔类型值,true/false
console.log(set);
//3.3 has
console.log(set.has("xixi"));//返回布尔类型,判断集合中是否有某个数据
//keys values 键和值是一样的 iterator构造器
console.log(set.keys());//直接获取这个set集合
console.log(set.values());
//3.4 clear
console.log(set.clear());//undefined 没有返回值
console.log(set);//清空集合
map
1、和对象类似,本质上是键值对的集合
2、map的键可以是各种类型的值,对象/数字/字符串…
3、但是在一般对象中,键只能用字符串来命名
let obj={a:1},obj1={b:2};
obj[obj1]='tiankong';//把obj1作为obj的键,对应的值为‘tiankong’
console.log(obj);
//普通情况下,要用一个对象作为键时,首先会把该对象.toString()
//普通情况下,键只可以是字符串
创建一个map
let map=new Map([[…,…],[…,…]]);
map常用属性
/map常用属性
console.log(M.size);//计算map长度
//set get set类似于add添加
M.set("qw",["ki","kji"]);//可以不断设置,返回的是对象
console.log(M);
console.log(M.get(1));//传入键,输出值
//delete
console.log(M.delete(1));//返回布尔类型,true/false
console.log(M);
//keys value
console.log(M.keys());
console.log(M.values());
console.log(M.entries());
console.log(M);//和有构造器的有什么区别
//遍历
M.forEach(function (value,index) {
console.log(value);
console.log(index);
})
注意事项
如果map集合中有键相等的元素,后面设置的值会覆盖之前设置的
M.set({},"hhhh");
M.set({},"dd");
console.log(M.entries());//两个都添加进去了
//由于两个对象地址不同,所以不会覆盖
console.log({}==={});//false 虽然是两个空对象但是他们自己不同,地址就不相同
但是如果是两个空对象作为同一个键放在map中,不会被覆盖
因为每次创建一个对象,他们都有自己的存放位置,而不是和前面的占用同一个地址