很多时候,我遇到相同的问题:我想用一个简单的条件过滤一个数组,例如检查非/相等,大于,小于,包含...
我的代码如下所示:
var result = [1, 2, 3, 4].filter(function(i) {
return i > 2;
});
console.log(result); // [3, 4]
拥有此类简单操作的快捷方式将非常不错,因此我创建了一些辅助函数:
function isGreaterThan(value) {
return function(original) {
return value < original;
}
}
[1, 2, 3, 4].filter(isGreaterThan(2)); // [3, 4]
要么:
function isGreaterThan(value, original) {
return value < original;
}
[1, 2, 3, 4].filter(isGreaterThan.bind(null, 2)); // [3, 4]
有没有更好的方法如何在javascript中做到这一点?javascript是否有任何内置函数来支持这些简单的比较?
Madox,您偶然发现的是curring概念!您会很高兴听到围绕这个想法建立了一个完整的JavaScript社区。使用Ramda,您的代码将如下所示:
var filterSmallNumbers = filter(gte(3));
var smallNumbers = filterSmallNumbers([1,2,3,4,5,6]);
而且有效。
Ramda提供的所有内容都是“咖喱助手功能”的清单,如您所显示的那样。如果您想使用自己的辅助函数,那么您可能需要一个curry
辅助函数来减少样板:var isGreaterThan = curry(function(a, b){ return a > b })
。大多数实用程序库(如Underscore,Lodash或Ramda)都提供此curry函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句