如何组合来自两个不同来源的过滤器&;在javascript中作为单一on返回?
下面是我使用的过滤技术,它使用来自两个不同来源的过滤器过滤掉storeItems filtersFromSource1是一个包含大量过滤参数的源&就像wise filtersFromSource2是另一个包含另一组过滤参数的源一样。(请不要担心那件事) 我的问题是如何组合来自这两个独立源的/concat结果并作为单个流/返回返回 目前我有两种方法 这是第一个如何组合来自两个不同来源的过滤器&;在javascript中作为单一on返回?,javascript,Javascript,下面是我使用的过滤技术,它使用来自两个不同来源的过滤器过滤掉storeItems filtersFromSource1是一个包含大量过滤参数的源&就像wise filtersFromSource2是另一个包含另一组过滤参数的源一样。(请不要担心那件事) 我的问题是如何组合来自这两个独立源的/concat结果并作为单个流/返回返回 目前我有两种方法 这是第一个 const getFiltered = (filtersFromSource1, filtersFromSource2) => {
const getFiltered = (filtersFromSource1, filtersFromSource2) => {
return storeItems.filter((storeItem) => {
return Object.keys(filtersFromSource1).every((k) => {
return filtersFromSource1[k].every((filter) => {
if (filter.param1) {
return filter.param1
.toString()
.toLocaleLowerCase()
.includes(filter.trim().toLocaleLowerCase());
}
// ...some other filterings from source1 todo here
return storeItem && Object.keys(filtersFromSource2).every((k) => {
return filtersFromSource2[k].every((filter) => {
if (filter.param1) {
return filter.param1
.toString()
.toLocaleLowerCase()
.includes(filter.trim().toLocaleLowerCase());
}
// ...some other filterings from source2 todo here
return storeItem
})
})
})
})
}
这是第二个
const getFiltered = (filtersFromSource1, filtersFromSource2) => {
return storeItems.filter((storeItem) => {
return Object.keys(filtersFromSource1).every((k) => {
return filtersFromSource1[k].every((filter) => {
if (filter.param1) {
return filter.param1
.toString()
.toLocaleLowerCase()
.includes(filter.trim().toLocaleLowerCase());
}
// ...some other filterings from source1 todo here
return storeItem
})
}) && Object.keys(filtersFromSource2).every((k) => {
return filtersFromSource2[k].every((filter) => {
if (filter.param1) {
return filter.param1
.toString()
.toLocaleLowerCase()
.includes(filter.trim().toLocaleLowerCase());
}
// ...some other filterings from source2 todo here
return storeItem
})
})
}
我只是想知道是否有更好的方法。(或类似于用于组合过滤选项的行业标准方法。)
记住source1和source2是两个不同的过滤源,具有不同的参数
我在angular应用程序中使用了这种技术。因此,如果有任何特定于角度/相关的东西,也请提及
如果有更好的方法使用其他第三方库,如lodash或ramda,请建议
这会有帮助的 请提供示例filtersFromSource1、filtersFromSource2和storeItems数据。这只是一些键值对。如果您提供所需的示例输入和输出,将非常有用。然后,您可以先组合两个筛选器(使用扩展运算符),然后只运行一次筛选,而不是两次运行相同的逻辑。几乎所有的代码都在重复。因此,可能需要创建一个函数以使其可重用。请提供示例filtersFromSource1、filtersFromSource2和storeItems数据。这只是一些键值对。如果提供所需的示例输入和输出,这将非常有用。然后,可能可以先组合两个筛选器(使用扩展运算符)然后你可以只运行一次过滤,而不是两次运行相同的逻辑。几乎所有的代码都在重复。所以可能需要创建一个函数使其可重用。