ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
56 lines (50 loc) • 1.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ramda = require("ramda");
var _flattenValues = _interopRequireDefault(require("./flattenValues"));
var pipe2 = (0, _ramda.curryN)(2, _ramda.pipe);
var useFilterFnAndWaitForValues = (0, _ramda.o)(pipe2(_flattenValues.default), _ramda.any);
/**
* Perform fulltext search with given search function.
*
* @func
* @category Array
*
* @param {Array} searchFn
* @param {Array} value
* @return {Array} filtered array of values
*
* @example
*
* R_.searchInArrayWith(R.contains('hi'),[
* 'hi',
* { foo: 'bar' },
* { foo: 'hi' },
* {
* foo: {
* bar: ['cuuus', { foo: 'hi' }],
* },
* },
* ['haha', 'hi'],
* ['haha', { foo: 'hi' }],
* ]);
* // [
* // 'hi',
* // { foo: 'hi' },
* // {
* // foo: {
* // bar: ['cuuus', { foo: 'hi' }],
* // },
* // },
* // ['haha', 'hi'],
* // ['haha', { foo: 'hi' }],
* // ]
*
*/
var searchInArrayWith = (0, _ramda.useWith)((0, _ramda.flip)(_ramda.call), [useFilterFnAndWaitForValues, (0, _ramda.flip)(_ramda.filter)]);
var _default = searchInArrayWith;
exports.default = _default;