Skip to content

Commit cc3cdae

Browse files
committed
Queue class ES6 syntax
1 parent af0fe3a commit cc3cdae

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

chapter04/01-Queue2.js

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
let Queue2 = (function () {
2+
3+
const items = new WeakMap();
4+
5+
class Queue2 {
6+
7+
constructor () {
8+
items.set(this, []);
9+
}
10+
11+
enqueue(element) {
12+
let q = items.get(this);
13+
q.push(element);
14+
items.set(this, q)
15+
}
16+
17+
dequeue() {
18+
let q = items.get(this);
19+
let r = q.shift();
20+
items.set(this, q);
21+
return r;
22+
}
23+
24+
front() {
25+
let q = items.get(this);
26+
return q[0];
27+
}
28+
29+
isEmpty(){
30+
return items.get(this).length == 0;
31+
}
32+
33+
size(){
34+
let q = items.get(this);
35+
return q.length;
36+
}
37+
38+
clear(){
39+
items.set(this, []);
40+
}
41+
42+
print(){
43+
console.log(this.toString());
44+
}
45+
46+
toString(){
47+
return items.get(this).toString();
48+
}
49+
}
50+
return Queue2;
51+
})();

0 commit comments

Comments
 (0)