Go to file
2023-07-25 11:28:24 -04:00
src add sample 2023-07-25 11:25:50 -04:00
.gitignore ignore files for the npm package 2023-07-25 11:28:24 -04:00
.npmignore ignore files for the npm package 2023-07-25 11:28:24 -04:00
package.json original package.json 2023-07-25 10:07:23 -04:00
README.md add sample 2023-07-25 11:25:50 -04:00
Taskfile.yaml ignore files for the npm package 2023-07-25 11:28:24 -04:00
tsconfig.json add a tsconfig 2023-07-25 10:06:33 -04:00

@yanick/remeda

This package adds a few functions to the already awesome remeda 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]