Как указано в моем ответе здесь вы можете комбинировать различные условия с логическим оператором ИЛИ.Используя этот метод some
, вы можете попробовать что-то вроде:
filterItems(param: any): void {
let val: string = param;
if (val) {
if (val.trim() !== '') {
this.filterItemsList = this.items.filter((data) => {
console.log(data.category);
return data.category.toLowerCase().indexOf(val.toLowerCase()) > -1
|| data.products.some(product => product.code.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
}
}
Как это работает?
some()
Метод проверяет, прошел ли хотя бы один элемент массива тест, реализованный предоставленной функцией.
Таким образом, мы можем легко проверить, есть ли у какого-либо из ваших продуктов код, содержащий значение поиска.Вы можете сделать это и для других ваших свойств, также объединяя их с помощью логического ИЛИ (||
) снова, как для desc
и так далее:
return data.category.toLowerCase().indexOf(val.toLowerCase()) > -1
|| data.products.some(product => product.code.toLowerCase().indexOf(val.toLowerCase()) > -1)
|| data.products.some(product => product.desc.toLowerCase().indexOf(val.toLowerCase()) > -1);