2017-10-12 75 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