如何从输入中有更多单词的数组中筛选数据



我还在学习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;
}

也许这会有所帮助。

最新更新