Lodash 等于函数

Lodash equals function

我需要对给定的地图进行多项操作:

var keys = {
  a: 1,
  b: 2,
  c: 1,
  d: 2,
  e: 2
}
_.findKey(keys, function(value) {
   return value === 2;
}); // "b"
_.omit(keys, function(value) {
   return value === 2;
}); // {a: 1, c: 1}

我想立即创建带有比较的回调。像这样

function equals(lhs) {
    return function(rhs) {
        return lhs === rhs;
    };
}

lodash 或 underscore 有对应的功能吗?我试图通过 _.matches(2) 进行回调,但它进行了深度比较并且不适用于原始类型。

当然,我可以自己创建,但我正在寻找一种通用的方法。

不确定我是否完全理解您的问题,但这是我对您所追求的内容的最佳猜测。

function equals(val) {
    return _.ary(_.partial(_.isEqual, val), 1);
}

_.findKey(keys, equals(2));
// → 'b'

_.omit(keys, equals(2));
// { a: 1, c:1 }

这里,equals()会return一个回调函数。它使用 ary() to make sure only one argument is passed. It uses partial() to apply the val argument to isEqual()。然后将其与集合中的每个值进行比较。