我还在学习angular,我想制作一个搜索栏或过滤器来过滤我从数据库中提取的数据,但我不知道怎么做。我的数据如下所示:数据
我想把名字和姓氏一起过滤数据。所以当我键入";约翰·约翰;在我的输入字段中,它会向我返回这个数组,其中的名称和姓氏是John John。过滤器我尝试只按名称或姓氏进行过滤,所以当我键入John时,它会返回该数组,但当我键入约翰·约翰时,它什么也不返回。
谢谢你的回复。
您有很多选择,这取决于;模糊的";您希望搜索结果为。例如,如果您键入";约翰·约翰;用户CCD_ 1应该在结果中还是必须是CCD_;surname
是否匹配?
一个非常基本的方法是检查名称或姓氏是否是搜索字符串的一部分。这可以由filtering
通过includes
:完成阵列
(参见操场上的完整示例(
data.filter(user => searchParam.includes(user.name) || searchParam.includes(user.surname));
您可以使用javascript 的过滤功能
function filterData(dataList: any[], name: string, surname: string) {
return dataList.filter( (dataObj) => ( dataObj.name == name && dataObj.surname == surname))
}
像这样的东西?
已编辑
对不起,我用了ts,但是同一个
function filterData(dataList, name, surname) {
return dataList.filter( (dataObj) => ( dataObj.name == name && dataObj.surname == surname))
}
filter(key: string): Data[]{
if(key){
return this.data.filter(x=>`${x.name} ${x.surname}`.toLowerCase().match(key.toLowerCase()));
}
return this.data;
}
也许这会有所帮助。