1:set es6新增的数据结构;类似于数组;但是它内部成员是唯一的;不具备重复的值;
set本身是个构造函数;用来生成set数据结构;
var s=new Set();
[1,2,3,4,5,2,1,2].forEach(x=>s.add(x));
for(let i of s){
console.log(i);
};
1 2 3 4 5;
上面是通过add()方法;将数据放在set方法中;表明取除了重复性;
另外set也接受一组参数作为初始化;
const set=new Set([1,2,3,4,5,5,5,5]);
[...set];
//[1,2,3,4,5]
var s = new Set([1, 2, 3, 4, 4]);
console.log(s);
//Set(4) {1, 2, 3, 4}
// 去除数组的重复成员
[...new Set(array)];
//去除重复的字符串;
[...new Set('abbcb')].join('');
//abc;
向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。
2 set的一些属性
- 方法add();
let s=new Set();
s.add(1);
s.add(2);
s.add(2);
s.size()//2;
2 被加入了两次;但是因为完全相等所以s的长度就是2;
-方法has();
s.has(1);//true;
s.has(3);//false;
- 方法delete()
s.delete(2);
s.has(2);//false;
总结
add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
let set = new Set(['red', 'green', 'blue']);
let arr = [...set];
// ['red', 'green', 'blue']
//删除重复的
let arr = [3, 5, 2, 2, 5, 5];
let unique = [...new Set(arr)];
// [3, 5, 2]
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}