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()。然后将其与集合中的每个值进行比较。
我需要对给定的地图进行多项操作:
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()。然后将其与集合中的每个值进行比较。