javascript - 有没有更快的方法来搜索表中的值?

标签 javascript html performance search html-table

我有一个包含将近 1000 行的 html 表格,需要具有搜索功能。我想让这个搜索自动进行,所以它会在用户开始输入字符串时开始搜索查询。这并不难,但搜索的性质导致在第一个或两个字符输入我的搜索栏后页面变慢几秒钟。

下面是搜索代码:

const cols = search_drop.value;
const itemsArr = document.querySelectorAll('tbody tr');

for (const ele of itemsArr) {
    const lower_case_search_value = this.value.toLowerCase();
const lower_case_table_value = ele.querySelector(`td[headers="${cols}"]`).innerText.toLowerCase();

    if (!lower_case_table_value.includes(lower_case_search_value)) {
        ele.style.display = 'none';
    } else {
        ele.style.display = 'table-row';
    }
}

我已经尝试在后台搜索所有内容,而不是每次都重新渲染元素,但速度仍然很慢。有什么加快速度的技巧吗?

最佳答案

我的猜测是,您可以将 td 文本存储为数据属性并利用属性搜索(请参阅 https://www.w3schools.com/cssref/sel_attr_contain.asp ),或者您可以通过将它们预先计算表(矩阵)的索引相对于给定的文本,那么您所需要做的就是迭代一个集合,这是一个线性时间(并且在某种意义上更好,因为您不与 DOM 交互)。

关于javascript - 有没有更快的方法来搜索表中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261045/

相关文章:

javascript - 在 javascript 中使用 jquery numscroller

html - Flexbox 和大小问题

python - 添加额外的循环会导致无响应

javascript - 在对象数组中添加对象(对象是多维的)

javascript - FP 替代 JavaScript/ReactJS 中的多态性

javascript - 固定位置菜单栏在向下滚动时落后于 JS 幻灯片

java - 抛出 Java 异常时是否生成堆栈跟踪?

c# - Xamarin CollectionView 缓慢滚动

javascript - 关于 string.replace 的相同代码在 firefox 和 chrome 中得到不同的结果

javascript - JS函数内循环动画