Skip to content

Commit 2af7ff0

Browse files
committed
Optimize counter
1 parent 7a85f60 commit 2af7ff0

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

JavaScript/8-counter.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,19 @@ function Counter() {}
55
const counter = initial => {
66
const f = val => {
77
f.count += val;
8-
Object.keys(f.events)
9-
.map(key => parseInt(key))
10-
.filter(n => n <= f.count)
11-
.forEach(n => {
12-
f.events[n].forEach(callback => callback(f.count));
13-
delete f.events[n];
14-
});
8+
Object.keys(f.events).filter(n => n <= f.count).forEach(n => {
9+
f.events[n].forEach(callback => callback(f.count));
10+
delete f.events[n];
11+
});
1512
return f;
1613
};
17-
const fields = { count: 0, events: {} };
1814
Object.setPrototypeOf(f, Counter.prototype);
19-
Object.assign(f, fields);
20-
return f(initial);
15+
return Object.assign(f, { count: 0, events: {} })(initial);
2116
};
2217

2318
Counter.prototype.on = function(n, callback) {
2419
const event = this.events[n];
25-
if (event) event.push(callback);
26-
else this.events[n] = [callback];
20+
if (event) event.push(callback); else this.events[n] = [callback];
2721
return this(0);
2822
};
2923

0 commit comments

Comments
 (0)