47 lines
1.3 KiB
JavaScript
Executable File
47 lines
1.3 KiB
JavaScript
Executable File
"use strict";
|
|
var MapPolyfill = (function () {
|
|
function MapPolyfill() {
|
|
this.size = 0;
|
|
this._values = [];
|
|
this._keys = [];
|
|
}
|
|
MapPolyfill.prototype.get = function (key) {
|
|
var i = this._keys.indexOf(key);
|
|
return i === -1 ? undefined : this._values[i];
|
|
};
|
|
MapPolyfill.prototype.set = function (key, value) {
|
|
var 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;
|
|
};
|
|
MapPolyfill.prototype.delete = function (key) {
|
|
var i = this._keys.indexOf(key);
|
|
if (i === -1) {
|
|
return false;
|
|
}
|
|
this._values.splice(i, 1);
|
|
this._keys.splice(i, 1);
|
|
this.size--;
|
|
return true;
|
|
};
|
|
MapPolyfill.prototype.clear = function () {
|
|
this._keys.length = 0;
|
|
this._values.length = 0;
|
|
this.size = 0;
|
|
};
|
|
MapPolyfill.prototype.forEach = function (cb, thisArg) {
|
|
for (var i = 0; i < this.size; i++) {
|
|
cb.call(thisArg, this._values[i], this._keys[i]);
|
|
}
|
|
};
|
|
return MapPolyfill;
|
|
}());
|
|
exports.MapPolyfill = MapPolyfill;
|
|
//# sourceMappingURL=MapPolyfill.js.map
|