我无法按多个值过滤“ listProduct”。如何按多个值过滤?
我尝试通过逗号写完,但是没有用。我在“ google”中找不到解决方案。
searchFilter = () => {
this.listProducts = this.listProductsOrigin.filter(e =>
e.name.toLocaleLowerCase().includes(this.searchValue.toLocaleLowerCase())
);
this.loading = false;
// tslint:disable-next-line: semicolon
};
我已经尝试过:
searchFilter = () => {
this.listProducts = this.listProductsOrigin.filter(e =>
e.name.toLocaleLowerCase().includes(this.searchValue.toLocaleLowerCase()),
e.description.toLocaleLowerCase().includes(this.searchValueDesc.toLocaleLowerCase())
);
this.loading = false;
// tslint:disable-next-line: semicolon
};
但不起作用。
答案 0 :(得分:0)
尝试:
searchFilter = () => {
this.listProducts = this.listProductsOrigin.filter(e =>
e.name.toLocaleLowerCase().includes(this.searchValue.toLocaleLowerCase())
|| e.description.toLocaleLowerCase().includes(this.searchValueDesc.toLocaleLowerCase())
);
this.loading = false;
// tslint:disable-next-line: semicolon
};
答案 1 :(得分:0)
打字稿编译器应警告您有关尝试的解决方案。 filter()
方法采用一个返回布尔值的函数,因此您可能需要这样的东西:
this.listProducts = this.listProductsOrigin.filter(e =>
e.name.toLocaleLowerCase().includes(this.searchValue.toLocaleLowerCase()) || e.description.toLocaleLowerCase().includes(this.searchValueDesc.toLocaleLowerCase())
);
或者也许:
this.listProducts = this.listProductsOrigin.filter(e =>
e.name.toLocaleLowerCase().includes(this.searchValue.toLocaleLowerCase()) && e.description.toLocaleLowerCase().includes(this.searchValueDesc.toLocaleLowerCase())
);
取决于您要将过滤子句与AND或OR操作结合使用