自定义javascript自动完成的重音折叠

Accent folding for a custom javascript autocomplete

本文关键字:折叠 javascript 自定义      更新时间:2023-09-26

我决定构建自己的javascript自动完成搜索,因为我有一个数组中超过120,000个元素的列表,并且非常简单的jQuery UI自动完成和jQuery自动完成只是没有为我工作。

它实际上被证明是非常简单的,到目前为止,对于一个包含80,000个元素的列表,它真的很快。无论如何,我迫切需要在我的自动补全中引入口音折叠功能,但我不知道该怎么做才能保持它的效率。

这是我的JS:

   var arr = ["Wayne Réviér", "Wayne Röllo", "Wayne Rolls", "Wayne Grety",    "Wayne Rüm", "Wayne Erry"]; //Example list.
    var searchBox = document.getElementById('searchBox');
    jQuery('#searchBox').on('input propertychange paste', function() {
    $('div').html("");
      var listCounter = 0;
    	setTimeout(function(){ 
    	    if(searchBox.value.length >= 3) { //restrict to 3+ characters.
    	 	for (var i = 0; i < arr.length; i++) { //loop through array
    	 		if( listCounter <= 4) { //only show top 5 results.
    	 			searchBoxLower = searchBox.value.toLowerCase(); //make comparing easier
    	 			arrLower = arr[i].toLowerCase();
    	 			if(arrLower.indexOf(searchBoxLower) > -1) {
    		 				listCounter++; //result found. +1 counter.
                            $('div').append(arr[i]+"<br>");
    		 			}
    	 			}	
    	 		}
    	 	}
    
    	}, 5);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="searchBox"/>
<div>
</div>

我怎么能在这里引入重音折叠呢?另外,如果你发现了什么可以提高效率的方法,我很乐意听到。谢谢!

我可能会对searchBoxLower进行RegExp测试。我现在不在家,无法测试代码,但我认为您可能会对本文感兴趣。

http://alistapart.com/article/accent-folding-for-auto-complete

大多数时候,当我需要自动完成搜索时,我正在使用Ajax和数据库,如果我可以这样说,我将所有重音字符替换为原始形式。例如所有的éèêàâôö等等。"e","一个","o"。这使得搜索过程更容易,但它会给你更多的结果。

我希望这篇文章对你有帮助。