I am able to filter below array
this.items = [
'Amsterdam',
'Bogota',
'India'
];
I am using this code in my list.ts file:
if (val && val.trim() != '') {
this.items = this.items.filter((item) => {
return (item.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
Requirement - I am fetching data from JSON which is returning array with multiple results, image of html and console shown below. Problem is how do I filter this:
I am fetching data from JSON using this code below:
this._listProduct.listProduct().subscribe(data => {
this.list = data;
console.log(data);
I want to filter this.list:
Image: list.html and of console.log:
list.html code for your reference:
<ion-content padding>
<ion-grid>
<ion-searchbar (ionInput)="getItems($event)"></ion-searchbar>
<ion-row>
<ion-col>Id</ion-col>
<ion-col>Product/Service</ion-col>
<ion-col>Name</ion-col>
<ion-col>Unit</ion-col>
<ion-col>Category</ion-col>
<ion-col>HSN</ion-col>
<ion-col>Posting head</ion-col>
<ion-col>Rate</ion-col>
<ion-col>Type</ion-col>
<ion-col>SACCode</ion-col>
<ion-col>Tax Collected</ion-col>
<ion-col></ion-col>
</ion-row>
<ion-row *ngFor = "let list of list">
<ion-col>{{list.ID}}</ion-col>
<ion-col>{{list.PRODUCTSERVICE}}</ion-col>
<ion-col>{{list.NAME}}</ion-col>
<ion-col>{{list.UNIT}}</ion-col>
<ion-col>{{list.CATEGORY}}</ion-col>
<ion-col>{{list.HSN}}</ion-col>
<ion-col>{{list.POSTINGHEAD}}</ion-col>
<ion-col>{{list.RATE}}</ion-col>
<ion-col>{{list.TYPE}}</ion-col>
<ion-col>{{list.SACCODE}}</ion-col>
<ion-col>{{list.TAX_CONNECTED}}</ion-col>
<ion-col>
<ion-icon ios="ios-create" md="md-create" (click)="editProduct(list)"></ion-icon>
<ion-icon ios="ios-close-circle" md="md-close-circle" (click)="deleteProduct(list)"></ion-icon></ion-col>
</ion-row>
</ion-grid>
</ion-content>
Update 1
I tried using below code but it is giving me error:
list.toLowerCase is not a function
Code tried:
if (val && val.trim() != '') {
this.list = this.list.filter((list) => {
return (list.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}

product, if that's what the list contains. You're calling toLowerCase() on the elements of the list. But the list doesn't contain strings, it contains objects. So that makes no sense. You need to decide on which property(ies) of the product you want to filter: name? category?name,productserviceandcategory