繁体   English   中英

Laggy字符串搜索,如何改进?

[英]Laggy string search, how can it be improved?

我有一个函数,我用它来搜索具有特定类名的元素的innerText中的特定字符串。 当它找到匹配时,它为该元素提供要显示的块的显示,如果不显示则不显示。 当我使用它来搜索(我有大约3千个具有相同类的元素)时,它需要几秒钟(大约5秒)才能完成。 是否有更基于性能的方式来编写此代码,可能会减少一两秒?

function searchClass(ClassName, Value){
    var c = document.getElementsByClassName(ClassName);
    var val = Value.toLowerCase().trim();
    for(var i=0;i<c.length;i++){
        if(c[i].innerText.toLowerCase().trim().indexOf(val) > -1){
            c[i].style.display = "block";
        }else{
            c[i].style.display = "none";
        }
    }
}

PS。 有一个触发该功能的keyup事件。

编辑:(解决方案)只需将innerText更改为textContent并通过评论进行一些小的更改,我的搜索会立即变得更快!

当你不需要前一个值时,预增量比后增量快,而你没有,所以切换到for循环中的预增量(尽管id期望今天的竞争js引擎自动优化这个,gcc已经在-O1和更高版本上做了很多年了

另外,除非你有很多脚本元素,textContent应该比innerText快很多,所以切换到textContent ......除此之外,我看不到太大的改进空间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM