javascript - 循环“冻结”我的网站。- 如何减少循环次数?
问题描述
我使用过滤方法,它做的一切都是正确的,但是在过滤之前我有很多循环来“冻结”我的网站一秒钟 - 两次。我想改进它,但我不知道它是最好的。
在这种情况下,我使用 jQuery,但我可以将该代码转换为 Vanilla JS,这没问题。
所以,
当我选中许多过滤复选框中的一个时,该值将被推送到一个项目数组中,我使用其参数来过滤项目。
let choosenValuesDesk = []; // array of items
$(".aside-sortwidget input:checkbox").change(function() { // runs when is checkbox touched
if($(this).is(":checked")) { // add to array
...
choosenValuesDesk.push(chooseMe); // choose me is item, prepared for filtration, variable from above ...
$(".desktop-slider__item").each(function(i, obj) { // loop slider items for filtration, btw, here is that "freeze"
choosenValuesDesk.map((val) => { // loop items from array above to filter items in each function
...
if($(this).data().filter.includes(val)) { // if this slider item has value from chosen checkbox value in data attribute
$(this).addClass("keep-this-slide"); // keep slider item
} else {
$(this).removeClass("keep-this-slide");
// else remove class and "hide" item...
}...
}
}
} else { // remove from array it's same process from above to uncheck checkbox
}
});
顺便提一句。我使用光滑滑块过滤器方法,这会是一个问题吗?
成功过滤的代码示例:
$(".desktop-slider")
.slick("slickUnfilter")
.slick("slickFilter", ".keep-this-slide");
解决方案
推荐阅读
- flutter - 如何使用从 WebView 中检索到的 cookie 来执行 http 请求
- python - 当我无法将变量传递给函数时使用什么而不是全局
- java - SendGrid 验证 ECDSA 签名 SpringBoot
- php - 如何在PHP中dislpay所有状态= 1的动物
- anylogic - 如何在anylogic中修复“迭代期间模型中的错误”
- python - 在基于 Python 的原始“浏览器”中使用用户的输入作为主机
- node.js - 当我尝试在其上运行节点文件时,猫鼬连接未打开
- laravel - 如果 composer.json 上的符号链接设置为 true,Laravel Nova 工具将不会更新
- python - 如何通过内存和迭代加深提高我的 alpha beta 剪枝 minimax 算法的性能
- r - R:使用带有数字类型值的开关功能?