gpt4 book ai didi

javascript - JavaScript 函数速度慢,我该如何改进?

转载 作者:行者123 更新时间:2023-12-02 22:08:01 24 4
gpt4 key购买 nike

我有以下 JavaScript 函数,它的执行速度似乎非常慢。

该函数在循环内被调用多次

function _matches(el, selectors) {

var result = selectors.filter(function (selector) {
return [].indexOf.call(document.querySelectorAll(selector), el) !== -1;
});

return result.length > 0;
}

这是如何调用该函数的示例

// Vertical Loop
rows.map(function (element, row) {

if (_matches(element, '.ignore')) {
// do something A
}

if (_matches(element, '.empty')) {
// do something B
}

var cols = element.querySelectorAll("th, td");
// Horizontal Loop
return cols.map(function (element, ic) {

if (_matches(element, '.ignore')) {
// do something A
}
if (_matches(element, '.empty')) {
// do something B
}
});
});

我不确定 [].indexOf.call(document.querySelectorAll(selector), el) 行的作用或含义,因此我不确定如何提高此函数的性能。

最佳答案

您正在查找 DOM 中与给定选择器匹配的所有元素,然后询问您已有的元素是否出现在该集合中。这是判断已有元素是否与给定选择器匹配的极其低效方法。

只需使用element.matches(selector)

// No:
if (_matches(element, '.ignore')) {
// do something A
}

// Yes:
if (element.matches('.ignore')) {
// do something A
}

关于javascript - JavaScript 函数速度慢,我该如何改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com