Set集合

Set集合,本质上就是对数组的一种包装

例如:
 
let imgs = new Set();
imgs.add(1);
imgs.add(1);
imgs.add(5);
imgs.add("5");
imgs.add(new String("abc"));
imgs.add(new String("abc"));
 
打印的结果:
1  5  '5'  'abc'  'abc'
 
Set集合是默认去重复的,但前提是两个添加的元素严格相等
所以5和"5"不相等,两个new出来的字符串不相等
 
如何删除元素 set.delete(key)
imgs.delete(5);
 
imgs.delete('5');
 
关于遍历的方法
由于Set集合本质上还是一个map,因此会有以下几种奇怪的遍历方法
var imgs = new Set(['a','b','c']);
 
根据key遍历
for(let item of imgs.keys()){
     console.log(item);
}
//a
//b
//c
 
根据value遍历
for(let item of imgs.values()){
     console.log(item);
}
//a
//b
//c
 
根据key-value遍历
for(let item of imgs.entries()){
     console.log(item);
}
//['a','a']
//['b','b']
//['c','c']
 
普通for...of循环(for...of跟for-in的区别很明显,就是直接取值,而不再取下标了)
for(let item of imgs){
     console.log(item);
}
//a
//b
//c
 
set集合没有提供下标方式的访问,因此只能使用for来遍历。
 
下面展示了一种极为精巧利用set集合对数组去重的方法
var newarr = [...new Set(array)];
原文地址:https://www.cnblogs.com/sunyang-001/p/10794116.html