【发布时间】:2023-03-29 13:07:01
【问题描述】:
如屏幕截图所示,我试图构建一个过滤器逻辑,但由于其他原因无法在后端/sql 中处理。
我正在获取产品数据,并且过滤器必须彼此相加。 为了实现按 1 个属性 id 过滤(例如按品牌 id 或类别 id 过滤),我构建了这样的功能:
multiFilter (arr, filters) {
const filterKeys = Object.keys(filters);
return arr.filter(eachObj => {
return filterKeys.every(eachKey => {
if (!filters[eachKey].length) {
return true;
}
return filters[eachKey].includes(eachObj[eachKey].id);
});
});
}
- 参数 arr 是 Product 数组
-
参数过滤器是哪些过滤器处于活动状态的信息。 比如:
{ "brands" : [4,6,8], "categorys" : [7,2,4,5], "additives" : [1,2,3,4,6,8,9,54,32,12] }
只要在产品的一个级别上按品牌 ID 或类别 ID 过滤,此方法就可以工作。
我现在要做的是,例如通过添加剂过滤产品,正如您在我的屏幕截图中看到的那样,它们更深一层。 任何想法如何实现这一目标?
谢谢
【问题讨论】:
标签: javascript arrays reactjs filter ecmascript-6