UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

41 lines (37 loc) 931 B
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;