下划线动态链接

下划线动态链接

问题描述:

如果我有一个必须关闭_.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); 
    }); 
}); 
+0

谢谢!这正是我一直在寻找:) – Toletov