У меня есть угловой компонент, который имеет 3 фильтра (категория, рейтинг и цена), и при выборе этих фильтров я должен показывать только соответствующие данные, поэтому я создал трубу и передал все три выбранных значения. На самом деле мой фильтр категорий работает полностью нормально, но два других фильтра (рейтинг и цена) не работают должным образом.
Данные Json:
"allBusiness": [
{
"category": "XYZ",
"description": "something something",
"business": [
{
"type": "Store",
"rating": 4,
"price" : "$"
},
{
"type": "Store",
"rating": 3,
"price" : "$"
},
{
"type": "Store",
"rating": 5,
"price" : "$$"
}
]
},
{
"category": "ABC",
"description": "Testing",
"business": [
{
"type": "Online",
"rating": 3,
"price" : "$"
},
{
"type": "Store",
"rating": 2,
"price" : "$"
},
{
"type": "Store",
"rating": 1,
"price" : "$$"
}
]
}
]
FilterPipe.ts:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(allBusiness: any[], selectedCategory: string, selectedRating: number, selectedPrice: string): any {
if (allBusiness && allBusiness.length){
return allBusiness.filter(item =>{
if (category && item.category.indexOf(selectedCategory) === -1){
return false;
}
if (rate && item.business.filter(rt => rt.rating != selectedRating)){ //tried filter, findIndex, some but nothing works
return false;
}
if (price && item.business.find(pr => pr.price != selectedPrice)){ //same here nothing is working
return false;
}
return true;
})
}
else{
return items;
}
}
}
Заранее спасибо.