Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中检查字符串是否在一个巨大的txt/csv中的最佳方法?_Javascript_Arrays_Performance_Csv_Lookup - Fatal编程技术网

Javascript中检查字符串是否在一个巨大的txt/csv中的最佳方法?

Javascript中检查字符串是否在一个巨大的txt/csv中的最佳方法?,javascript,arrays,performance,csv,lookup,Javascript,Arrays,Performance,Csv,Lookup,我的现实世界的问题是:我的移动应用程序的用户键入他们的城市,我必须确保它确实存在,并且写得正确(不区分大小写,所以这些是正确的:纽约,纽约,纽约。这不正确:纽约) 有一些在线API工作得很好(例如Google Geocode API),但是: 在少量请求后,您必须支付(目前每天2.500美元) 用户必须连接到internet 这就是为什么我认为离线本地解决方案会更好。有许多网站(如)可以下载包含世界上每个城市的列表。我可以将这个巨大的txt/csv嵌入到我的应用程序中,并在本地进行字符串搜索(这

我的现实世界的问题是:我的移动应用程序的用户键入他们的城市,我必须确保它确实存在,并且写得正确(不区分大小写,所以这些是正确的:纽约,纽约,纽约。这不正确:纽约) 有一些在线API工作得很好(例如Google Geocode API),但是:

  • 在少量请求后,您必须支付(目前每天2.500美元)
  • 用户必须连接到internet
  • 这就是为什么我认为离线本地解决方案会更好。有许多网站(如)可以下载包含世界上每个城市的列表。我可以将这个巨大的txt/csv嵌入到我的应用程序中,并在本地进行字符串搜索(这是一个大文件,可以,但没有那么大。它只是一次性下载30-40MB的uncompressed.txt文件) 我不惜一切代价试图避免jQuery,我不想使用任何PHP/MySQL解决方案(即使全文索引可能很方便),这就是为什么我尝试使用javascript来完成所有这些。 给定一个字符串作为输入,比如说“city3”,检查它是否在(外部)巨大列表中的最佳/最快方法是什么,如:

    • 城市1
    • 城市2
    • 城市3
    • 城市4
    • [……]
    在解决了这个(大)问题后:如果没有精确的匹配,有没有一种方法可以在不冻结设备10分钟的情况下搜索正确的城市? 在前面的示例中,假设用户键入“city3”或“cyty3”或“cìty3”:任何js函数都能告诉他可能在寻找“city3”吗?在这种情况下,这种搜索是否太慢


    谢谢

    如果速度是个问题,那么我建议将数据加载到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()。