the-utils
Version:
Set of tools to keep simple things simple
115 lines (92 loc) • 3.2 kB
JavaScript
;
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;