设计一个构造函数IntSet,包括属性 len(集合的长度)和集合web_set(存放元素),以及如下方法:
insert(val) 向集合中添加一个元素,重复的元素不能添加
length() 返回集合的元素个数
getInt(index) 返回集合中位置index的元素
disp() 输出集合的所有元素
union(s2) 实现两个集合的并运算
intersection(s2) 实现两个集合的交运算
difference(s2) 实现两个集合的差运算
要求:定义两个整数集合{2,4,1,3,5}和{2,5,10},输出前者的元素个数以及它们进行集合的并、交、差运算
class IntSet {
web_set = new Set();
len = 0;
insert(val) {
const add = this.web_set.add(val);
this.len = this.web_set.size;
}
length() {
return this.len;
}
getInt(index) {
const arr = [...this.web_set];
return arr[index];
}
disp() {
return this.web_set.values();
}
union(s2) {
const set = new Set();
for (let value of this.web_set) {
set.add(value);
}
for (let value of s2) {
set.add(value);
}
return set;
}
intersection(s2) {
let arr = [];
for (let value of this.web_set) if (s2.has(value)) arr.push(value);
return arr;
}
difference(s2) {
let arr = [];
for (let value of this.web_set) if (!s2.has(value)) arr.push(value);
return arr;
}
}
const intSet = new IntSet();
intSet.insert(2);
intSet.insert(4);
intSet.insert(1);
intSet.insert(3);
intSet.insert(5);
const s2 = new Set([2, 5, 10]);
console.log(intSet.union(s2));
console.log(intSet.intersection(s2));
console.log(intSet.difference(s2));