【问题标题】:Fastest way to search string for substring using jQuery使用 jQuery 在字符串中搜索子字符串的最快方法
【发布时间】:2014-10-21 03:06:28
【问题描述】:

我正在为 jQuery 使用 DataTables 插件。在 DataTable 中,我大约有 16 个 tr 行,每行有 4 个 td 列。 DataTables 插件提供了一个 API 扩展,允许在表格的所有单元格或指定列的所有单元格中搜索字符串。

搜索扩展返回找到匹配项的行索引数组。例如,[3, 7, 10, 11]。搜索扩展最初支持完全匹配搜索,我必须从以下位置进行修改:

if (val == sSearch)

到:

if (val.indexOf(sSearch) > 0)

我的自定义肯定是我遇到性能问题的原因,但这是必要的,因为单元格的内容是动态更新的,因此无法执行精确匹配搜索。

干草堆示例:

<input id="_HeatOfRejection" class="form-control text-right text-box single-line" type="text" name="HeatOfRejection" measureid="HeatLoad" value="5000.0" uomid="MBH">

一个示例针:

' measureid=\"HeatLoad\" '

执行针头搜索所需的平均时间约为 17.5 毫秒,由于内循环包含约 16 个不同的针头,外循环导致内循环的额外循环,因此处理时间太明显了。这并不可怕,但可能需要 2-3 秒。请注意,这不是关键功能。

我想知道是否有比使用 indexOf() 执行此搜索更快的方法。使用 jQuery 选择器可能会更快,但 id 对搜索来说是未知/不重要的。多个控件可以包含针,所以我必须搜索整个列。

【问题讨论】:

  • 搜索元素attribute是否匹配$("[measureid=HeatLoad]")
  • 据我所知 indexOf 是浏览器 javascript 引擎的本地实现,javascript 函数不能比这更快。性能问题很可能是由脚本的其他部分引起的,我们没有太多可见性。如果您可以包含一个简单的jsfiddle.net 来显示您的问题会更好,以便其他人可以摆弄并尝试帮助您

标签: javascript jquery search


【解决方案1】:

要搜索具有特定值的属性的元素,您可以使用

$("[measureid='HeatLoad']");

它将返回所有具有属性“measureid”和值为“HeatLoad”的元素。

【讨论】:

  • @M J,我理解您提供此解决方案的原因。我需要包含匹配 measureid 的表行的索引。有不止一行具有匹配的 measureid。使用选择器肯定会加快速度,我已经考虑过如何做到这一点。我只是想我可能能够接受它的方式,并想知道是否有比 indexOf() 更快的函数。
  • @rwkii : 是的,使用这个选择器可以让所有元素满足选择条件,但是如果你需要索引,那么这将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 2010-12-18
  • 2014-02-18
  • 2012-12-18
  • 1970-01-01
  • 2014-08-27
相关资源
最近更新 更多