2017-10-12 6 views
0

名前と姓に基づいて配列を返すフィルタがあります。私はそれを不感受性にした。しかし問題は、結果を返さないスペースを押したときです。たとえば、名前が(姓と名字を含む)Sadek Hossainとしましょう。今私がsadekを検索すると動作しますが、sadek hossainまたはSadek 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

あなたはのようなもので、最後の+最初に対してチェックする必要があり、完全な名前を一致させたい場合は:これは1つのスペースを入れて、ユーザの入力に余分なスペースを置き換える

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

    }) 
} 

。姓と名義の余分なスペースを削除します。最初の+ lastを連結して比較します。

姓または名、または氏名と一致させたい場合は、これを以前の機能と組み合わせる必要があります。

+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()。一致(this.search.toLowerCase())||完全名.toLowerCase()。一致(this.search.toLowerCase()。replace(/ \ s +/g、 '')) \t \t \t \t \t \t} '' – sadek

関連する問題