gpt4 book ai didi

jquery - 通过每次匹配时删除 td 来优化算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:21 25 4
gpt4 key购买 nike

我有一个算法(在 Jquery 中):

  1. 收到 List<string>
  2. 在表格中搜索匹配项
  3. 做一些 Action

但是有人告诉我有一种方法可以执行此算法,并且只搜索尚未匹配的 td(或者更可能不搜索已匹配的 td)。或者任何其他优化算法的想法。

if (!jQuery.isEmptyObject(data)) {
$td = $('#Table td');
$.each(data.StringList, function (index, val) {
$td.each(function () {
if ($(this).text() === val) {
$(this).closest(".ClassA").addClass('ClassB')
$(".ClassB").find(".ClassC").removeClass('ClassC').addClass('ClassD');

// Maybe something like $(td).skip($(this))
return false;
}
});
});

谢谢,如果您需要更多信息,请询问。

最佳答案

您可以从集合中删除已经找到的元素,但这与首先找到它的成本一样高,因此几乎没有任何收获。

你可以将文本上的元素映射到一个对象中,然后你就可以很容易地从文本中查找一个元素:

if (!jQuery.isEmptyObject(data)) {
$td = $('#Table td');
var map = {};
$td.each(function () {
var t = $(this);
map[t.text()] = t;
});
$.each(data.StringList, function (index, val) {
if (val in map) {
map[val].closest(".ClassA").addClass('ClassB');
$(".ClassB").find(".ClassC").removeClass('ClassC').addClass('ClassD');
}
});
});

这将具有 O(n+m) 的性能而不是 O(n*m)。

如果循环中的第二行试图找到在第一行中获得类 ClassB 的元素,那么您应该将它们链接在一起以使用对您已经创建的元素的引用有:

      map[val].closest(".ClassA").addClass('ClassB')
.find(".ClassC").removeClass('ClassC').addClass('ClassD');

关于jquery - 通过每次匹配时删除 td 来优化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398888/

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