JSFiddle - React, Tailwind, and code Playground
JavaScript
const count = (() => {
const map = new Map();
return x => {
map.set(x, (map.get(x) || 0) + 1);
return map.get(x);
}
})();
const range = function*(start, end, step) {
for (let i = start; i < end; i += step) {
yield i;
}
for (let i = start; i > end; i += step) {
yield i;
}
}
class IterableWeakSet extends WeakSet {
constructor() {
super();
this.set = new Set();
}
add(obj) {
super.add(obj);
this.set.add(new WeakRef(obj));
}
*[Symbol.iterator]() {
for (const weakRef of this.set) {
const obj = weakRef.deref();
if (obj) {
yield obj;
}
else {
this.set.delete(weakRef);
}
}
}
}