2017-10-12 50 views
0

我有一个过滤器,它根据名字和姓氏返回数组。我没有理会这件事。但问题是当我按下一个空格它不会返回任何结果。例如,让我们说名称是(包括名字和姓氏)Sadek Hossain。现在,如果我搜索sadek它的作品,但如果我输入sadek hossainSadek Hossain它从来没有工作。一旦按下空格,它就不起作用。按空格时Vue js过滤器不工作

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

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

因为'sadek hossain'不符合您的任何条件。您正在测试'sadek hossain'是第一个名字还是'sadek hossain'是最后一个名字。 –

+0

是的,我也这么认为:(有什么方法可以逃脱空间吗? – sadek

回答

2

如果你想匹配的全名,你应该检查对第一+最后的东西,如:

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,' ')) 

    }) 
} 

这在用户输入替换多余的空格用一个空格。剥掉名字和姓氏的空白。连接第一个+最后一个并进行比较。

如果你想匹配名字或姓氏或全名,你需要将它与前一个函数结合起来。

+0

谢谢。我也以同样的方式,但你让我的生活变得轻松:)。非常感谢。下面是代码,如果一些人需要帮助:) 'filterUser(){ \t \t \t \t回this.buddylist.filter((好友)=> { \t \t \t \t \t VAR全称= buddy.oponent.firstName .trim()+ “” + buddy.oponent.lastName.trim(); \t \t \t \t \t返回buddy.oponent.firstName.toLowerCase()匹配(this.search.toLowerCase())|| buddy.oponent .lastName.toLowerCase()。match(this.search.toLowerCase())|| fullname.toLowerCase()。match(this.search.toLowerCase()。replace(/ \ s +/g,'')) \t \t \t \t}) \t \t \t} – sadek