ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
53 lines (44 loc) • 1.25 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ramda = require("ramda");
var _isArray = _interopRequireDefault(require("./isArray"));
var _isObject = _interopRequireDefault(require("./isObject"));
var recursiveArray = function recursiveArray(r) {
return (0, _ramda.o)(_ramda.flatten, (0, _ramda.map)(flattenValues))(r);
};
var recursiveObject = function recursiveObject(r) {
return (0, _ramda.o)(flattenValues, _ramda.values)(r);
};
/**
* Recursively flatten values from object and array.
*
* @func
* @category List
*
* @param {Array|Object} value
* @return {Array} array of values
*
* @sig {k: v} → [v]
*
* @example
*
* R_.flattenValues([
* 'hi',
* { foo: 'bar' },
* {
* foo: {
* bar: ['baz', { foofoo: 'hi' }],
* },
* },
* ['bar', 'hi'],
* ['barbar', { hrun: 'hi' }],
* ]) // ['hi','bar','baz','hi','hi','hi']
*
*/
var flattenValues = (0, _ramda.cond)([[_isArray.default, recursiveArray], [_isObject.default, recursiveObject], [_ramda.T, (0, _ramda.of)(Array)]]);
var _default = flattenValues;
exports.default = _default;