monad-ts
Version:
Monad-ts is a small library implements some of key monads and way to chain them in a pipe (flow) in JavaScript and TypeScript. Angular 2+ compatible.
42 lines (41 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Decreasing the dimension of an array by n.
* @method cast
* @param {any} arr - input array.
* @param {number} n - decreasing factor.
* @return {Array<any>|T[]|Error}
*/
function cast(arr, n) {
if (n === void 0) { n = 0; }
return typeof n === 'number' && Array.isArray(arr)
? n > 0 ? _reduser(arr, n) : arr
: new Error('Function cast. Input must be array and factor - number.');
}
exports.cast = cast;
/**
* @method _reduser
* @param {Array<T>} arr - input array.
* @param {number} n - decreasing factor.
* @return {Array<any>}
* @private
*/
function _reduser(arr, n) {
return arr.length
? arr.reduce(function (acc, vL) {
return acc.concat(_fact(vL, n));
}, [])
: arr;
}
/**
* @method _fact
* @param {Array<any>} arr - input array.
* @param {number} n - decreasing factor.
* @return {Array<any>}
* @private
*/
function _fact(arr, n) {
return (n === 1) ? arr : _reduser(arr, n - 1);
}
//Copyright (c) 2017 Alex Tranchenko. All rights reserved.