rxjs
Version:
Reactive Extensions for modern JavaScript
43 lines (38 loc) • 917 B
text/typescript
export class MapPolyfill {
public size = 0;
private _values: any[] = [];
private _keys: any[] = [];
get(key: any) {
const i = this._keys.indexOf(key);
return i === -1 ? undefined : this._values[i];
}
set(key: any, value: any) {
const i = this._keys.indexOf(key);
if (i === -1) {
this._keys.push(key);
this._values.push(value);
this.size++;
} else {
this._values[i] = value;
}
return this;
}
delete(key: any): boolean {
const i = this._keys.indexOf(key);
if (i === -1) { return false; }
this._values.splice(i, 1);
this._keys.splice(i, 1);
this.size--;
return true;
}
clear(): void {
this._keys.length = 0;
this._values.length = 0;
this.size = 0;
}
forEach(cb: Function, thisArg: any): void {
for (let i = 0; i < this.size; i++) {
cb.call(thisArg, this._values[i], this._keys[i]);
}
}
}