Javascript中检查字符串是否在一个巨大的txt/csv中的最佳方法?
我的现实世界的问题是:我的移动应用程序的用户键入他们的城市,我必须确保它确实存在,并且写得正确(不区分大小写,所以这些是正确的:纽约,纽约,纽约。这不正确:纽约) 有一些在线API工作得很好(例如Google Geocode API),但是:Javascript中检查字符串是否在一个巨大的txt/csv中的最佳方法?,javascript,arrays,performance,csv,lookup,Javascript,Arrays,Performance,Csv,Lookup,我的现实世界的问题是:我的移动应用程序的用户键入他们的城市,我必须确保它确实存在,并且写得正确(不区分大小写,所以这些是正确的:纽约,纽约,纽约。这不正确:纽约) 有一些在线API工作得很好(例如Google Geocode API),但是: 在少量请求后,您必须支付(目前每天2.500美元) 用户必须连接到internet 这就是为什么我认为离线本地解决方案会更好。有许多网站(如)可以下载包含世界上每个城市的列表。我可以将这个巨大的txt/csv嵌入到我的应用程序中,并在本地进行字符串搜索(这
- 城市1
- 城市2
- 城市3
- 城市4
- [……]
谢谢如果速度是个问题,那么我建议将数据加载到JavaScript对象中并执行内存搜索,而不是重复扫描文件中的一大块文本
尝试将数据格式化为以城市名称为键的JSON格式,这将提供良好的搜索性能。一个解决方法是创建一个数据库SQL或noSQL,并使用jquery JSON函数通过JavaScript代码查询该数据库 使用SQL数据库的理想选择可能是MySQL的增强型、插入式替代 在这个解决方案中,您可能需要一个后端,例如来从数据库获取数据,将数据转换为JSON格式,然后使用jQUery库通过JavaScript获取数据,并使用函数
使用noSQL数据库的理想选择是 在这个解决方案中,您可以直接从javascript获取数据,也可以使用$.getJSON函数
提供的MongoDB示例如果您不想使用数据库,我认为您可以这样做: -首先,使用一个大文件将其拆分为多个文件。(您可以为此编写一个脚本,并只使用一次来拆分大文件)。在每个文件中,放置以(示例)aa开头的城市,第二个文件是以ab开头的城市 -然后检查每个城市的首字母,然后在该文件中搜索。
例如,如果您需要搜索城市“Ahmedabad”,它将只搜索以Ah开头的城市的文件。也许这不是最好的解决方案,最终您得到的是421文件,而不是1,但是重新搜索会更快 所以你担心速度,但你想将40多兆的文本转储到你的网页中并重复搜索?自己将其作为web服务托管,然后不向自己收费。移动设备不是数据库。在大型集合上执行模糊搜索并不是一件小事。即使我有一个较小的.txt文件,在其中搜索字符串的最快方法是什么?如果您只需要知道字符串是否存在,我会使用substring()。