2017-02-09 3 views
0

안녕하세요 저는 문제가있는 부분을 해결하기 위해 애 쓰고 있습니다.각진 2 악센트 접기

입력란에는 자동 완성 기능이 있습니다. 나는 그것을 접는 액센트를 갖고 싶습니다.

예.

나는 용어 ​​mun로 검색 할 때이 두 단어는 내가 현재 가지고하는 것은 Dortmund & München

표시해야한다고 나는 Dortmund를 나열 용어 mün으로 검색하는 경우. 하지만 München

accentMap = { 
    'ü': 'u', 
    'Ü': 'u', 
    'ä': 'a', 
    'Ä': 'a', 
    'ö': 'o', 
    'Ö': 'o' 
}; 

let str = ''; 
for(let i = 0; i < input.length; i++) { 
    str += this.accentMap[input.charAt(i)] || input.charAt(i); 
} 

그때 Dortmund 또는 München 등의 해당 항목을 반환하는 API에 str로 전화를 걸.

+0

어떤 종류의'typeahead'를 사용하고 있습니까? 어떤 lib에 의해 제공됩니까? – developer033

+0

ng2 bootstrap typeahead – bendajo

+0

나는 그들의 문서를 읽고'typeaheadLatinize' 입력을 찾았습니다. 이 경우에는 작동하지 않습니까? – developer033

답변

0

코드가 항상 "mun"을 "mun"으로 변환하기 때문에 코드가 "Dortmund"에서 발견되지만 "München"에서는 찾을 수 없기 때문입니다. 다음

function removeAccents(input: string){ 
    let accentMap = { 
     'ü': 'u', 
     'Ü': 'u', 
     'ä': 'a', 
     'Ä': 'a', 
     'ö': 'o', 
     'Ö': 'o' 
    }; 

    let str = ''; 

    for(let i = 0; i < input.length; i++) { 
     str += this.accentMap[input.charAt(i)] || input.charAt(i); 
    } 

    return str; 
} 

그리고 당신이 단어의 목록에 대해 입력을 비교하고자 할 때이 같은 성명을 사용합니다 :

는 재사용 가능한 기능의 코드를 포장 첫째,이 문제를 해결하려면

if(removeAccents(input) == removeAccents(word)){ 
    // The input matched the word 
}