如截图所示,我试图构建一个过滤逻辑,由于其他原因无法在后端/ 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);
});
});
}
参数过滤器是过滤器处于活动状态的信息。 例如:
{
"brands" : [4,6,8],
"categorys" : [7,2,4,5],
"additives" : [1,2,3,4,6,8,9,54,32,12]
}
只要在产品的某个级别按品牌ID或类别ID进行过滤,就可以使用此功能。
我现在要做的是,通过添加剂来额外过滤产品,例如,如我在屏幕截图中看到的那样,它们更深一层。 任何想法如何实现这一目标?
感谢
答案 0 :(得分:0)
答案是:
multiFilter (arr, filters) {
const filterKeys = Object.keys(filters);
return arr.filter(eachObj => {
return filterKeys.every(eachKey => {
if (!filters[eachKey].length) {
return true;
}
if(eachObj[eachKey].id) {
return filters[eachKey].includes(eachObj[eachKey].id );
} else {
return filters[eachKey].some(f => eachObj[eachKey].some(v => v.id === f));
}
});
});
}
---->
return filters[eachKey].some(f => eachObj[eachKey].some(v => v.id === f));