下划线动态链接
问题描述:
如果我有一个必须关闭_.filter方法的函数数组,我该如何动态创建此过滤器?下划线动态链接
_filters : {
shipped: function(order){ return order.get('is_shipped') },
imported: function(order){ return order.get('is_imported') }
},
我想是有在在_filters对象如何创建
也许有人有想法,有能力从关闭动态创建链这样
_.chain(orders).filter(filters.shipped).filter(filters.imported).value()
动态链接在下划线?
谢谢!
答
如果我明白你想要什么,你希望有一个动态数量的过滤器,应该应用到数组。如果是这样,你可以从_.values()
提取对象的过滤器,然后使用_.every()
。如果所有的过滤器返回true
,订单将所得数组中:
var filters = {
shipped: function(order) {
return order.get('is_shipped')
},
imported: function(order) {
return order.get('is_imported')
}
};
var filtersArray = _.values(filters);
var result = _.filter(orders, function(order) {
return _.every(filters, function(filter) {
return filter(order);
});
});
你也可以做过滤,没有下划线:
var filters = {
shipped: function(order) {
return order.get('is_shipped')
},
imported: function(order) {
return order.get('is_imported')
}
};
var filterKeys = Object.keys(filters);
var result = orders.filter(function(order) {
return filterKeys.every(function(key) {
return filter[key](order);
});
});
谢谢!这正是我一直在寻找:) – Toletov