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)];