重音折叠以自定义javascript自动完成功能

最后发布: 2015-07-24 21:35:24


问题

我决定构建自己的javascript自动完成搜索,因为我在数组中有超过120,000个元素的列表,而jQuery UI Autocomplete和jQuery Autocomplete只是对我不起作用。

事实证明,这很容易,并且到目前为止,它有8万个元素,而且确实非常快。 无论如何,我迫切需要在自动完成中引入重音折叠功能,但是我不知道应该如何进行重音折叠以使其保持高效。

这是我的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> 

我如何在其中引入重音折叠? 另外,如果您发现任何可以提高效率的东西,我也很想听听。 谢谢!

javascript jquery autocomplete
回答

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

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

在大多数情况下,当我需要自动完成搜索时,我正在使用Ajax和数据库,并且如果我会这样说,我会将所有重音符号替换为其原始格式。 例如 所有éèêàâôö等,以“ e”,“ a”,“ o”表示。 这使搜索过程变得容易得多,但是它将为您提供更多结果。

希望本文对您有所帮助。