UNPKG

the-utils

Version:

Set of tools to keep simple things simple

115 lines (92 loc) 3.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.arr = exports.keyUnique = exports.unique = exports.hasintersect = undefined; var _trunc = require('babel-runtime/core-js/math/trunc'); var _trunc2 = _interopRequireDefault(_trunc); var _isInteger = require('babel-runtime/core-js/number/is-integer'); var _isInteger2 = _interopRequireDefault(_isInteger); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends4 = require('babel-runtime/helpers/extends'); var _extends5 = _interopRequireDefault(_extends4); var _object = require('./object'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // ======== Array var isArray = function isArray(a) { return a && Array.isArray(a); }; var get = function get(a, index, defaultValue) { return isArray(a) && typeof a[index] !== 'undefined' ? a[index] : defaultValue; }; var objByKey = function objByKey(a, key) { if (!isArray(a)) { return {}; } return a.reduce(function (agg, t) { var okey = _object.obj.get(t, key, 'default'); var oval = _object.obj.get(agg, okey, []); return (0, _extends5.default)({}, agg, (0, _defineProperty3.default)({}, okey, [].concat((0, _toConsumableArray3.default)(oval), [t]))); }, {}); }; var objByPages = function objByPages(a) { var rows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (!isArray(a)) { return { 1: [] }; } var inRows = !(0, _isInteger2.default)(rows) || rows === 0 ? 10 : rows; return a.reduce(function (agg, t, i) { var okey = (0, _trunc2.default)(i / inRows) + 1; var oval = _object.obj.get(agg, okey, []); return (0, _extends5.default)({}, agg, (0, _defineProperty3.default)({}, okey, [].concat((0, _toConsumableArray3.default)(oval), [t]))); }, {}); }; /** * Checks whenever 2 arrays have intersection * * @param {Array} a * @param {Array} b * * @return {Boolean} */ var hasintersect = exports.hasintersect = function hasintersect(a, b) { return a.reduce(function (r, x) { return r || b.includes(x); }, false); }; /** * Returns unique values from 2 arrays * @param {Array} a * @param {Array} b * * @return {Array} */ var unique = exports.unique = function unique(a, b) { return b.reduce(function (r, x) { return r.includes(x) ? r : [].concat((0, _toConsumableArray3.default)(r), [x]); }, a.reduce(function (r, x) { return r.includes(x) ? r : [].concat((0, _toConsumableArray3.default)(r), [x]); }, [])); }; /** * * @param a */ var keyUnique = exports.keyUnique = function keyUnique(a, key) { return a.reduce(function (r, x) { return [].concat((0, _toConsumableArray3.default)(unique(r, _object.obj.get(x, key, [])))); }, []); }; var arr = exports.arr = { isArray: isArray, get: get, objByKey: objByKey, objByPages: objByPages, hasintersect: hasintersect, unique: unique, keyUnique: keyUnique }; exports.default = arr;