一、Set集合
Set集合:是一种数据结构,类似于数组,且没有重复的值,主要用于数组去重,字符串去重。
1、创建方式
(1)使用new运算符 let 变量 = new Set();
let s1 = new Set();
console.log(s1);
(2)通过数组来创建:let 变量名= new Set(1,2,3,4,5,1,2,3)去除重复元素
let arr = [1,2,3,4,5,1,2,3]
let s2 = new Set(arr);
console.log(s2);
2、常用方法
(1)add(val):向集合中添加元素
s1.add(123).add(456).add('abc');
console.log(s1);
注:返回的是一个对象 所以可以反复调用
(2)delete(val):删除集合中的元素 若删除成功返回true 失败false
let flag = s1.delete(123);
console.log(flag);
(3)has(val):判断val在集合中是否存在 若存在返回true 不存在false
let f = s1.has('table');
console.log(f);
(4)clear():清空集合,没有返回值
s1.clear();
console.log(s1);
(5)values():获取的是集合中所有元素的value
let t = s1.values();
console.log(`values:`,t);
(6)keys():获取的是集合中所有元素的key
let k = s1.keys();
console.log(`keys:`,k);
强调:Set集合也是key-value格式,它的key和value是相同的
3、属性
size:存放的是集合中元素的个数
console.log(s1.size);
4、遍历方法
(1)for...in
for(let i of s1.values()){
console.log(i);
}
(2)forEach()
s1.forEach(function(value,key){
console.log(`${value}---${key}`);
})
5、集合运算
(1)并集
let setA = new Set([4,5,6]);
let setB = new Set([5,6,7]);
// 实现setA与setBack的并集
let bj = new Set([...setA,...setB]);
console.log(bj);
(2)交集
let arr = [...setA];
let temp = arr.filter(function(item){
if(setB.has(item) == true){
return item;
}
})
console.log(temp);
(3)差集
// 实现setA与setBack的差集 通过对交集的取反即可
let arr = [...setA];
let temp = arr.filter(function(item){
if(setB.has(item) == false){
return item;
}
})
console.log(temp);
注:Set是一个构造函数,凡是用构造函数创建对象都要用new
6、WeakSet集合:只是一个对象集合,即集合中只能存放对象
二、Map集合
1.数据的存放格式
采用key-value的方式进行存放
采用键值对方式存放数据的有
(1)对象:属性对应的是key 属性值对应的是value
(2)JSON:是常用的一种前后台数据交换的格式
(2)Map
2、定义
Map是一种数据结构(Hash结构),在ES6中Maori是一种存放许多键值对的有序列表。
3、使用方法
1、属性:size ——存放的是Map中的元素个数
let m1 = new Map();
console.log(m1.size);
2、方法
(1)Map():构造方法,用来创建Map对象,不带参数表示创建空的Map,即size属性值为0
(2)set(key,value):向Map中添加数据
let m2 = new Map();
// 向Map集合中添加元素
m2.set('name','张三');
m2.set('USA','美国');
m2.set('CH','中国');
m2.set('INA','印度');
// 输出
console.log(m2);
(3)get(key):获取键为key的value
console.log(m2.get('USA'));
(4)has(key):判断Map中是否存在key 存在true 不存在false
(5)delete(key):用来删除Map中的指定key
m2.delete('name');
console.log(m2);
(6)clear():清空Map
(7)keys():返回Map中的所有key
let m3 = new Map();
m3.set('id','01');
m3.set('dept','开发部')
m3.set('phone','132311131');
m3.set('phone2','132311131');
注:(1)Map中的key不能重复,但是value可以重复
(2)keys()返回的是Map中的所有key的集合——keys返回的集合类型的Set
(3)在Map中通过key可以得到value,反之则不行
(8)values():返回Map中的所有value
for(let v of m3.values()){
console.log(v);
}
(9)entries():获取Map的所有成员(即所有的key-value)
for(let t of m3.entries()){
console.log(t);
}
(10)orEach():遍历Map的所有成员 注:函数的第一个参数是value,第二个参数是key
m3.forEach(function(value,key){
console.log(`${key}:${value}`)
})
3、Map数组()
(1)解构整个Map
let m5 = new Map([
['one','北京'],
['two','上海'],
['three','深圳']
])
let arr = [...m5.entries()];
console.log(arr);
(2)解构keys
let a1 = [...m5.keys()];
console.log(a1);
(3)解构所有的values
let a2 = [...m5.values()];
console.log(a2);