Javascript Lodash等于函数
我需要对给定的地图进行几个操作:Javascript Lodash等于函数,javascript,functional-programming,underscore.js,lodash,Javascript,Functional Programming,Underscore.js,Lodash,我需要对给定的地图进行几个操作: 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(lh
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或下划线是否具有此函数的等效项?我曾尝试通过\uu0.matches(2)
进行回调,但它进行了深入比较,无法处理基元类型
当然,我可以自己创建它,但我正在寻找一种以普通方式创建它的方法。不确定我是否完全理解您的问题,但以下是我对您的目标的最佳猜测。
这里,
equals()
将返回一个回调函数。它用于确保只传递一个参数。它用于将val
参数应用于。然后将其与集合中的每个值进行比较。您希望键有什么输出?
?更新的代码示例。现在这里是预期结果的评论,我仍然不清楚你想做什么。您正在尝试替换调用.findKey
和.omit
并使用其他内容吗?我想为.findKey
、.omit
和其他调用生成回调,它将传递的值与一些constantI值进行比较。我不知道您将如何执行此操作,但我非常确定您可以使用最新版本的下划线和u.mapObject函数来迭代对象并获得所需的结果。太棒了!看起来这是通过lodash实现的最好方法。但这会对性能产生重大影响。所以我想用一个函数就可以实现的方法来扩展lodash
function equals(val) {
return _.ary(_.partial(_.isEqual, val), 1);
}
_.findKey(keys, equals(2));
// → 'b'
_.omit(keys, equals(2));
// { a: 1, c:1 }