# @yanick/remeda This package adds a few functions to the already awesome [remeda](https://remedajs.com/) library. For convenience, it re-export everything that remeda has. ``` import { matches, pipe } from '@yanick/remeda'; // equivalent to import { pipe } from 'remeda'; import { matches } from '@yanick/remeda'; ``` ## Additional functions ### `matches(target, matcher)` ### `matches(matcher)(target)` Compares the input with the matcher and returns `true` if they match. The matcher can be a function (which will be fed the input and is expected to return a boolean), or a value. If the value is an object, the matching will be recursive. ``` import { matches, pipe } from '@yanick/remeda'; matches( 'potato', 'potato'); // => true matches( 'potato', 'turnip'); // => false matches( 'potato', vegetable => vegetable === 'potato'); // => true matches({ a: 1, b :2 }, { a: 1 } ); // => true matches({ 'a': 4, 'b': 5, 'c': 6 }, { 'a': 4, 'c': 6 }) // => true pipe({a:1,b:2}, R.matches({ a: 1 }) ) // => true pipe({a:1,b:2}, R.matches({ b: (val) => val < 5 }) ) // => true pipe({a:1,b:2}, R.matches({ c: 3 }) ) // => false pipe( { 'a': 4, 'b': 5, 'c': 6 }, R.matches({ 'a': 4, 'c': 6 })) // => true ``` ### `sample(target, size | { size: number, repeating: boolean })` ### `sample(size | { size: number, repeating: boolean })(target)` Returns random elements of the array. If `size` is bigger than the array length and `repeating` is false, returns a number of samples equal to the size of the whole array. ``` sample([1,2,3,4],2); // [3,1] sample([1,2,3,4],{size:5, repeating: true}); // [3,1,2,2,4] sample([1,2,3,4],{size:5, repeating: false}); // [3,1,2,4] R.pipe( [{a: 5}, {a: 1}, {a: 3}], R.sumBy(x => x.a) ) // 9 R.sample(2)([1,2,3,4]); // [3,1] R.sample({size:5, repeating: true},[1,2,3,4]); // [3,1,2,2,4] R.sample({size:5, repeating: false},[1,2,3,4]); // [3,1,2,4] ```