forked from loiane/javascript-datastructures-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03-ES2015Set.js
executable file
·72 lines (58 loc) · 1.63 KB
/
03-ES2015Set.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
72
const 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 []
const setA = new Set();
setA.add(1);
setA.add(2);
setA.add(3);
const setB = new Set();
setB.add(2);
setB.add(3);
setB.add(4);
// --------- Union ----------
const union = (set1, set2) => {
const unionAb = new Set();
set1.forEach(value => unionAb.add(value));
set2.forEach(value => unionAb.add(value));
return unionAb;
};
console.log(union(setA, setB));
console.log(new Set([...setA, ...setB]));
// --------- Intersection ----------
const intersection = (set1, set2) => {
const intersectionSet = new Set();
set1.forEach(value => {
if (set2.has(value)) {
intersectionSet.add(value);
}
});
return intersectionSet;
};
console.log(intersection(setA, setB));
console.log(new Set([...setA].filter(x => setB.has(x))));
// alternative - works on FF only
// console.log(new Set([x for (x of setA) if (setB.has(x))]));
// --------- Difference ----------
const difference = (set1, set2) => {
const differenceSet = new Set();
set1.forEach(value => {
if (!set2.has(value)) {
differenceSet.add(value);
}
});
return differenceSet;
};
console.log(difference(setA, setB));
console.log(new Set([...setA].filter(x => !setB.has(x))));
// alternative - works on FF only
// console.log(new Set([x for (x of setA) if (!setB.has(x))]));