gpt4 book ai didi

javascript - 下划线动态链接

转载 作者:行者123 更新时间:2023-11-30 15:41:12 25 4
gpt4 key购买 nike

如果我有一组函数必须是 _.filter 方法的闭包,我怎样才能动态地创建这个过滤器?

_filters : {
shipped: function(order){ return order.get('is_shipped') },
imported: function(order){ return order.get('is_imported') }
},

我想要的是能够像这样动态创建链

_.chain(orders).filter(filters.shipped).filter(filters.imported).value()

来自_filters 对象中的闭包

也许有人有想法,如何在下划线中创建动态链接?

谢谢!

最佳答案

如果我理解你想要的是正确的,你希望有一个动态数量的过滤器,应该应用于数组,如果是这样,你可以使用 _.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);
});
});

关于javascript - 下划线动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com