集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中。
特点:key 和 value 相同,没有重复的 value。
数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值。
1.创建Set 传入的参数放在数组里
let s1=new Set();
let s2=new Set([1,2,3,3]);
console.log(s1);//Set(0) {}
console.log(s2);//Set(3) {1, 2, 3} 忽略重复的
2.Set类的属性:size 返回set元素的个数
let s=new Set([1,2,3,'a']);
console.log(s.size);//4
3.Set类的方法
1) add(value) 添加一个数据,返回Set结构本身。
let s=new Set([1,'a']);
console.log(s.add(null));//Set(3) {1, "a", null}
console.log(s.add(undefined));//Set(4) {1, "a", null, undefined}
console.log(s.add({}));//Set(5) {1, "a", null, undefined, {…}}
console.log(s.add([]));//{1, "a", null, undefined, {…}, Array(0)}
2) delete(value) 删除指定数据,返回一个布尔值,表示删除是否成功。
let s=new Set([1,null,undefined,NaN,{}]);
console.log(s);//Set(5) {1, null, undefined, NaN, {…}}
console.log(s.delete(NaN));//true
console.log(s.delete([]));//false
console.log(s);//Set(4) {1, null, undefined, {…}}
3) has(value) 判断该值是否为Set的成员,反回一个布尔值。
let s=new Set([1,2,3]);
console.log(s);//Set(3) {1, 2, 3}
console.log(s.has(1));//true
console.log(s.has('1'));//false
4)clear() 清除所有数据,没有返回值。
let s=new Set([1,2,3]);
console.log(s);//Set(3) {1, 2, 3}
s.clear()
console.log(s);//Set(0) {}
5) keys() 返回键名的遍历器
let s=new Set([1,null,undefined,NaN,{}]);
for(i of s.keys()){
console.log(i);//1 null undefined NaN {}
}
6) values() 返回键值的遍历器
let s=new Set([1,null,undefined,NaN,{}]);
for(i of s.values()){
console.log(i);//1 null undefined NaN {}
}
7) entries() 返回键值对的遍历器
let s=new Set([1,null,undefined,NaN,{}]);
for([key,value] of s.entries()){
console.log('key : '+key,'value : '+value);
// key : 1 value : 1
// key : null value : null
// key : undefined value : undefined
// key : NaN value : NaN
// key : [object Object] value : [object Object]
}
8) forEach() 使用回调函数遍历每个成员