Javascript 使用jQuery或纯JS过滤数字的快速解决方案

Javascript 使用jQuery或纯JS过滤数字的快速解决方案,javascript,jquery,search,filter,digits,Javascript,Jquery,Search,Filter,Digits,这是我的页面: 我使用以下代码过滤keyup上的记录: function Search() { $('.co').show(); $('.co').each(function () { var showco = true; for (var i = 1; i <= 9; i++) { if ($('.txtFilter' + i.toString()).val().trim()

这是我的页面:

我使用以下代码过滤keyup上的记录:

function Search() {
        $('.co').show();
        $('.co').each(function () {
            var showco = true;
            for (var i = 1; i <= 9; i++) {
                if ($('.txtFilter' + i.toString()).val().trim() != '') {
                    if ($(this).find('.D' + i.toString()).text() != $('.txtFilter' + i.toString()).val()) {
                        showco = false;
                    } ;
                };
            };
            if (!showSim) {
                $(this).hide();
            };
        });
    };
函数搜索(){
$('.co').show();
$('.co')。每个(函数(){
var showco=true;

对于(var i=1;我尝试将数字放入二维数组,并在该数组上运行筛选代码。以这种方式从DOM中提取数字可能太昂贵。Chrome开发工具将告诉您在那里花费了多少时间。您希望将DOM或视图与数据/模型分离。搜索数据,并显示视图结果。查看
$('.txtFilter'+i.toString())
,循环中每行执行两次,每次执行
9次。正如您执行
18
时,选择每个
.co
元素。对于
5000
元素,这是
18*5000
。如果您将该结果缓存在
之前,则无论有多少个元素,每个
都将始终是
9
拥有。另一件不必要的昂贵的东西是
.text()
,但最昂贵的部分可能是
$('.co').show();
,以及
$(this.hide()
。特别是因为您先
.show
全部,然后
.hide())不必切换VisuBILITY。考虑它是在KEYUP事件上,如果用户使用退格或删除来删除一个数字,则隐藏元素应该在再次过滤之前显示。如果用户只添加数字,则另一个优化将过滤您的最后结果,不需要再次检查您知道的W。不匹配