有没有一种方法可以在不遍历所有元素的情况下使用 jquery 在数组中查找子字符串?
我有一个数组
arr = ["tree","bird"];
如果不遍历所有元素,我可以弹出具有“ird”子字符串的元素吗?
如果您只想知道子字符串是否出现,您可以执行以下操作:
var arr = ["tree", "bird"];
arr.join("|").match(/tree/); //The "|" is to make sure that the substring is not formed by 2 different words
顺便说一句,这是纯 Javascript,你不需要 JQuery。
但是,您将无法将元素从数组中“弹出”,为此您必须获取它的索引,为此,您必须遍历数组。
基本上,没有。
但是,如果您担心遍历整个列表,您可以使用 for 循环,一旦找到匹配项,您就可以退出该循环。
如果问题是性能问题, 因为它是一个包含 1930 年以来数据的大型数组,除非您正在执行诸如自动完成之类的操作(每次用户键入字符时都需要重新搜索),您最大的问题将是数据传输而不是客户端处理。
无论哪种方式,如果它是一大堆数据,请不要发送给客户端。实施一项服务,该服务将进行计算、检索并将结果发回给您。
在服务器端(或者如果你真的很想在客户端实现),如果在遍历数组(或选择数据库?)时性能很差,你最好的选择是类似Trie 的数据结构(它是实现自动完成等场景的子字符串搜索的最常见方法)。