[英]How to reduce jquery search time complexity
我正在使用 jquery 自定义搜索。 如果有大约 1000 万个条目,使用此搜索是否可行。 请建议一些其他的搜索功能。
目前在我的脑海中,如果用于批量条目,我正在考虑“大数据或 Hadoop”。
$("#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...">
理想情况下...如果速度是您所追求的,请不要使用 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.