UNPKG

oaty

Version:

Object Array Transposer(y) - JS objects with multiple key/value structures

92 lines (91 loc) 3.28 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); var OatyArray = /** @class */ (function () { function OatyArray(data, options) { if (data === void 0) { data = []; } if (options === void 0) { options = {}; } this._transposed = {}; this._data = __spreadArrays(data); this._options = options; this.transpose(this._data); } Object.defineProperty(OatyArray.prototype, "keys", { get: function () { var _a; return ((_a = this._options.keys) !== null && _a !== void 0 ? _a : Object.keys(this._transposed)); }, enumerable: true, configurable: true }); Object.defineProperty(OatyArray.prototype, "length", { get: function () { return this._data.length; }, enumerable: true, configurable: true }); Object.defineProperty(OatyArray.prototype, "data", { get: function () { return this._data; }, enumerable: true, configurable: true }); Object.defineProperty(OatyArray.prototype, "transposed", { get: function () { return this._transposed; }, enumerable: true, configurable: true }); OatyArray.prototype.get = function (keyName, keyValue) { if (this._transposed[keyName] === undefined) { throw new ReferenceError("The key '" + keyName + "' has not been transposed"); } if (keyValue === undefined) { return this._transposed[keyName]; } return this._transposed[keyName][keyValue]; }; OatyArray.prototype.push = function () { var _a; var data = []; for (var _i = 0; _i < arguments.length; _i++) { data[_i] = arguments[_i]; } this.transpose(data); return (_a = this._data).push.apply(_a, data); }; OatyArray.prototype.transpose = function (data) { var _a; var _b; for (var _i = 0, data_1 = data; _i < data_1.length; _i++) { var datum = data_1[_i]; for (var _c = 0, _d = (_b = this._options.keys) !== null && _b !== void 0 ? _b : Object.keys(datum); _c < _d.length; _c++) { var key = _d[_c]; if (datum[key] === undefined) { continue; } var searchKey = datum[key]; if (this._transposed[key] === undefined) { this._transposed[key] = (_a = {}, _a[searchKey] = [datum], _a); continue; } if (this._transposed[key][searchKey] === undefined) { this._transposed[key][searchKey] = [datum]; continue; } this._transposed[key][searchKey].push(datum); } } }; return OatyArray; }()); exports.OatyArray = OatyArray;