Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I mix underscore functions to use a custom comparison algorithm for _.contains()?

Ideally, I want to pass a custom comparison function to _.contains() as a third argument, but it only accepts a collection and a value.

Code

I want to do this:

_.contains(['apples', 'oranges'], 'applesss', function (element, value) {
  return new RegExp(element).test(value);
});

... but I can't, so what's the next best thing?

like image 416
Aditya M P Avatar asked Dec 21 '25 23:12

Aditya M P


1 Answers

It sounds like you're looking for _.some, which returns true if the test passes for at least one element in the array:

_.some(['apples', 'oranges'], function (element) {
  return new RegExp(element).test('applesss');
});

You can easily wrap it in your own function:

function test_regexes(arr, value) {
  return _.some(arr, function (element) {
    return new RegExp(element).test(value);
  });
}

test_regexes(['apples', 'oranges'], 'applesss');
like image 99
Paul Avatar answered Dec 23 '25 13:12

Paul