File tree 1 file changed +29
-9
lines changed
1 file changed +29
-9
lines changed Original file line number Diff line number Diff line change 1
1
// XSet because ES6 already has a Set class
2
2
class XSet {
3
3
constructor ( ) {
4
- this . data = { } ;
4
+ this . data = this . getStore ( ) ;
5
5
}
6
6
7
7
add ( element ) {
8
- if ( ! this . data [ element ] ) {
9
- this . data [ element ] = true ;
10
- }
8
+ this . data . push ( element ) ;
11
9
}
12
10
13
11
remove ( element ) {
14
- if ( this . data [ element ] ) {
15
- delete this . data [ element ] ;
16
- }
12
+ this . data . pop ( element ) ;
17
13
}
18
14
19
15
has ( element ) {
20
- return ! ! this . data [ element ] ;
16
+ return this . data . contains ( element ) ;
21
17
}
22
18
23
19
values ( ) {
24
- return Object . keys ( this . data ) ;
20
+ return this . data . val ( ) ;
25
21
}
26
22
27
23
union ( givenSet ) {
@@ -37,6 +33,30 @@ class XSet {
37
33
38
34
return result ;
39
35
}
36
+
37
+ // eslint-disable-next-line class-methods-use-this
38
+ getStore ( ) {
39
+ const store = { } ;
40
+
41
+ return {
42
+ push ( el ) {
43
+ if ( ! store [ el ] ) {
44
+ store [ el ] = true ;
45
+ }
46
+ } ,
47
+ pop ( el ) {
48
+ if ( store [ el ] ) {
49
+ delete store [ el ] ;
50
+ }
51
+ } ,
52
+ contains ( el ) {
53
+ return ! ! store [ el ] ;
54
+ } ,
55
+ val ( ) {
56
+ return Object . keys ( store ) ;
57
+ } ,
58
+ } ;
59
+ }
40
60
}
41
61
42
62
// const s = new XSet();
You can’t perform that action at this time.
0 commit comments