gpt4 book ai didi

javascript - 过滤一次或过滤多次

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:45 25 4
gpt4 key购买 nike

我有一个包含对象的数组:

objects = [a, b, c, ...]

我有很多函数可以为给定的对象返回 true/false

functions = [f1, f2, f3, ...]

现在我想获取所有传递所有函数的对象。什么最有效?

functions.forEach(function(f) {
objects = objects.filter(f);
})

objects = objects.filter(function(o) {
functions.forEach(function(f) {
if(!f(o)) return false;
})
})

我不确定什么是最有效的,这取决于过滤器功能有多大?它们是一样的吗?

最佳答案

在这两种情况下,您都为每个函数调用 objects.filter,复杂度是相同的。如果您对先前过滤器的结果使用 filter 而不是每次都将其应用于所有对象,则可以稍微优化一下。

for (f in functions){
objects = objects.filter(functions[f])
}

如果可能,按时间复杂度乘以它们返回 True 的概率(升序)对您的函数进行排序。

关于javascript - 过滤一次或过滤多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37586342/

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