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

당신은 당신이 같은 지난 + 처음에 확인해야합니다 전체 이름을 일치 시키려면 :이 하나 개의 공간으로 사용자 입력에 여분의 공백을 대체

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(). 일치 (this.search.toLowerCase()) || fullname.toLowerCase(). 일치 (this.search.toLowerCase(). replace (/ \ s +/g, '')) \t \t \t \t}) \t \t \t} – sadek

관련 문제