forked from loiane/javascript-datastructures-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04-UsingES6Set.js
71 lines (56 loc) · 1.53 KB
/
04-UsingES6Set.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
let set = new Set();
set.add(1);
console.log(set.values()); //outputs @Iterator
console.log(set.has(1)); //outputs true
console.log(set.size); //outputs 1
set.add(2);
console.log(set.values()); //outputs [1, 2]
console.log(set.has(2)); //true
console.log(set.size); //2
set.delete(1);
console.log(set.values()); //outputs [2]
set.delete(2);
console.log(set.values()); //outputs []
let setA = new Set();
setA.add(1);
setA.add(2);
setA.add(3);
let setB = new Set();
setB.add(2);
setB.add(3);
setB.add(4);
//--------- Union ----------
let unionAb = new Set();
for (let x of setA) unionAb.add(x);
for (let x of setB) unionAb.add(x);
console.log(unionAb);
//--------- Intersection ----------
let intersection = function(setA, setB){
let intersectionSet = new Set();
for (let x of setA){
if (setB.has(x)){
intersectionSet.add(x);
}
}
return intersectionSet;
};
let intersectionAB = intersection(setA, setB);
console.log(intersectionAB);
//alternative - works on FF only
//intersectionAb = new Set([x for (x of setA) if (setB.has(x))]);
//console.log(intersectionAB);
//--------- Difference ----------
let difference = function(setA, setB){
let differenceSet = new Set();
for (let x of setA){
if (!setB.has(x)){
differenceSet.add(x);
}
}
return differenceSet;
};
let differenceAB = difference(setA, setB);
console.log(differenceAB);
//alternative - works on FF only
//differenceAB = new Set([x for (x of setA) if (!setB.has(x))]);
//console.log(differenceAB);