How to reduce jquery search time complexity

时间:2019-03-06 11:37:53

标签: javascript jquery

I am using jquery custom search. is it feasible to use this search if there are around 10 million entries. Please suggest some other search functionality .

Presently in my mind I am thinking about "Big data or Hadoop" if it used for bulk entries.

$("#searchInput").on("keyup", function () {
          var value = $(this).val().toLowerCase();
          $("#itemTable tr").filter(function () {
                $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
          
          
          });
          ar t1 = performance.now();
           alert("Call to doSomething took " + (t1 - t0) + " milliseconds.");
   });   // <---- The function you're measuring time for 

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<input class="form-control" id="searchInput" placeholder="Search...">

1 个答案:

答案 0 :(得分:0)

理想情况下...如果追求的是速度,请不要使用jQuery。但是,这是jquery中的一个快速版本,现在可以使用。

基本上,选择元素很昂贵,因此,请尽可能在keyup函数外部进行选择。您错误地使用了.filter()方法,它过滤了以前的jQuery选择器。

现在键入时,它会显示所有内容,并隐藏不匹配不匹配的所有内容。

var $rows = $("#itemTable tr");
$("#searchInput").on("keyup", function() {
  $rows.show();
  var value = this.value.toLowerCase();
  var $rowsTohide = $rows.filter(function() {
    return $(this).text().toLowerCase().indexOf(value) === -1;
  });
  
  $rowsTohide.hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<input type="search" class="form-control" id="searchInput" placeholder="Search...">

<table id="itemTable">
  <tr><td>FOO</td></tr>
  <tr><td>bar</td></tr>
  <tr><td>baz</td></tr>
  <tr><td>hello</td></tr>
</table>