目录
一、手写Set
// 无重复元素
// {'1':1,'200':200}形式
class Set{
constructor(){
this.items = {};
}
add(data){
if(!this.has(data)){
this.items[data] = data;
return true;
}
return false;
}
delete(data){
if(this.has(data)){
delete this.items[data];
return true;
}
return false;
}
has(data){
return data in this.items;
}
clear(){
this.items = {};
}
size(){
return Object.keys(this.items).length;
}
values(){
return Object.values(this.items);
}
}
var set = new Set();
set.add(10); //{'10':10}
set.add(20); //{'10':10,'20':20}
set.add(300);
set.delete(20);
console.log(set);
var s = set.size();
var v = set.values();
console.log(s);
console.log(v);
set.clear();
console.log(set);
二、ES6中的Set
// ES6 中的 Set
var set = new Set();
set.add(10);
set.add(20);
set.add(30);
set.add(30);
set.delete(20);
set.has(20);
// 返回的是迭代器
console.log(set.values());
// size是一个属性
console.log(set.size);
console.log(set);
set.clear();
console.log(set);
三、交集、并集、差集
// 1、并集
var setA = new Set([1,2,3]);
var setB = new Set([2,3,4]);
var result1 = new Set([...setA,...setB]);
console.log(result1);
// 2、交集
var result2 = new Set([...setA].filter(item=>setB.has(item)));
console.log(result2);
// 3、差集
var result3 = new Set([...setA].filter(item=>!setB.has(item)))
console.log(result3);