如何混合下划线函数以使用_.contains()的自定义比较算法?

Adi*_*M P 3 javascript underscore.js

理想情况下,我想将自定义比较函数_.contains()作为第三个参数传递,但它只接受集合和值.

我想做这个:

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

......但我不能,那么下一个最好的东西是什么?

Pau*_*aul 7

听起来你正在寻找_.some,true如果测试通过了数组中至少一个元素,它会返回:

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

您可以轻松地将它包装在您自己的函数中:

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

test_regexes(['apples', 'oranges'], 'applesss');
Run Code Online (Sandbox Code Playgroud)