我有一个过滤器,该过滤器根据名字和姓氏返回数组。我使它变得无意义。但是问题是当我按空格时不会返回任何结果,例如,假设名字是(包括名字和姓氏)Sadek Hossain。现在,如果我搜索sadek,它可以工作,但是如果我输入sadek hossainSadek Hossain,它将永远无法工作。一旦按下空格,它就无法工作。

这是我正在使用的过滤器代码。

filterUser(){
            return this.buddylist.filter((buddy)=>{
                return buddy.oponent.firstName.toLowerCase().match(this.search.toLowerCase()) || buddy.oponent.lastName.toLowerCase().match(this.search.toLowerCase());
            })
        }

最佳答案

如果要匹配全名,则应使用类似以下内容的第一个+最后一个进行检查:

filterUser(){
   return this.buddylist.filter((buddy)=>{
     var fullname = buddy.oponent.firstName.trim() + " " + buddy.oponent.lastName.trim()
     return fullname.toLowerCase().match(this.search.toLowerCase().trim().replace(/\s+/g,' '))

   })
}


这会将用户输入中的多余空格替换为一个空格。去除名字和姓氏上的所有多余空间。连接第一个+最后一个并进行比较。

如果要匹配名字,姓氏或全名,则需要将其与以前的功能结合使用。

09-17 19:03