ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
41 lines (37 loc) • 931 B
JavaScript
import { values, flatten, map, cond, T, o, of } from 'ramda';
import isArray from './isArray';
import isObject from './isObject';
var recursiveArray = function recursiveArray(r) {
return o(flatten, map(flattenValues))(r);
};
var recursiveObject = function recursiveObject(r) {
return o(flattenValues, 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 = /*#__PURE__*/cond([[isArray, recursiveArray], [isObject, recursiveObject], [T, /*#__PURE__*/of(Array)]]);
export default flattenValues;